PostgreSQL: Resetowanie hasła PostgreSQL na Ubuntu [zamknięte]

97

W Ubuntu zainstalowałem bazę danych PostgreSQL i utworzyłem superużytkownika dla serwera.

Jeśli zapomniałem hasła superużytkownika postgresql, jak mogę je zresetować (hasło) dla tego użytkownika?

Próbowałem go odinstalować, a następnie zainstalować ponownie, ale poprzednio utworzony superużytkownik został zachowany.

Ritesh Mehandiratta
źródło

Odpowiedzi:

218

Zakładając, że jesteś administratorem maszyny, Ubuntu przyznał ci prawo do sudo do uruchamiania dowolnego polecenia jako dowolny użytkownik.
Zakładając również, że nie ograniczyłeś praw w pg_hba.confpliku (w /etc/postgresql/9.1/mainkatalogu), powinien zawierać tę linię jako pierwszą regułę:

# Database administrative login by Unix domain socket  
local   all             postgres                                peer

(Informacje o lokalizacji pliku: 9.1to główna wersja postgres i mainnazwa twojego „klastra”. Będzie się różnić, jeśli używasz nowszej wersji postgres lub nazw innych niż domyślne. Użyj pg_lsclusterspolecenia, aby uzyskać te informacje dla twojej wersji / systemu).

W każdym razie, jeśli pg_hba.confplik nie ma tej linii, edytuj plik, dodaj go i przeładuj usługę za pomocą sudo service postgresql reload.

Wtedy powinieneś być w stanie zalogować się psqljako superużytkownik postgres za pomocą tego polecenia powłoki:

sudo -u postgres psql

Po wejściu do psql wydaj polecenie SQL:

ALTER USER postgres PASSWORD 'newpassword';

W tym poleceniu postgresjest nazwą superużytkownika. Jeśli użytkownik, którego hasło zostało zapomniane ritesh, byłby, polecenie wyglądałoby tak:

ALTER USER ritesh PASSWORD 'newpassword';

Referencje: PostgreSQL 9.1.13 Dokumentacja, Rozdział 19. Uwierzytelnianie klienta

Pamiętaj, że musisz wpisać postgres z pojedynczym S na końcu

Jeśli pozostawienie hasła w postaci zwykłego tekstu w historii poleceń lub w dzienniku serwera jest problemem, psql zapewnia interaktywną meta-polecenie, aby tego uniknąć, jako alternatywę dla ALTER USER ... PASSWORD:

\password username

Pyta o hasło, wpisując podwójnie ślepą próbę, następnie haszuje je zgodnie z password_encryptionustawieniem i wydaje ALTER USERpolecenie do serwera z zaszyfrowaną wersją hasła zamiast wersji jawnej.

Daniel Vérité
źródło
2
użyłem twojej metody, moja nazwa superużytkownika to ritesh moja pg_hba.conf jest taka, jak wspomniałeś. i uruchom polecenie "ALTER USER postgres PASSWORD 'nowe hasło';" konsola wyświetla „ALTER ROLE”. następnie wyszedłem za pomocą ctrl + c, po czym wykonałem polecenie createuser. pokazuje, że muszę wprowadzić hasło, wprowadziłem nowe hasło, ale wyświetla mi się błąd „createuser: nie można połączyć się z postgres bazy danych: FATAL : uwierzytelnianie hasła nie powiodło się dla użytkownika "ritesh" ". jak utworzyć użytkownika i jakie powinno być hasło dla tego polecenia?
Ritesh Mehandiratta
Jeśli chcesz zmienić hasło dla ritesh, zmień powyższy ALTER USER ritesh PASSWORD 'newpassword'
kod
powinieneś zrestartować postgres po zmianie pg_hba.conf ....
Mahdi
1
Nie ma potrzeby restartowania, po prostu użyj przeładowania pg_ctl.
hbn
Dziękuję Ci za to.
Promise Preston