PostgreSQL: Zapomniane hasło. Jak zresetować hasło?

28-mar-2023

Zastosuj poniższą procedurę, jeśli zdarzyło Ci się zapomnieć hasła użytkownika postgres

1 – Znajdź plik pg_hba.conf. Ten plik określa zasady dotyczące tego kto i jak musi się uwierzytelnić przed serwerem:

2 – Za chwilę zmodyfikujesz ten plik, dobrym zwyczajem jest wykonanie kopii przed modyfikacją. Po całej procedurze wystarczy przywrócić oryginalny plik i będzie po sprawie. Następnie otwórz plik np. w notatniku i zamień w linijce rozpoczynającej się słowem host i zawierającej adres 127.0.0.1, tekst w ostatniej kolumnie. U mnie było tam wpisane scram-sha-256, a zaminiłem go na trust (oryginalna zawartość linijki jest zakomentowana powyżej zaznaczonej linii na obrazku poniżej. Nowa zawartosć linii jest zaznaczona). Ten wpis mówi o tym, że połączenie pochodzące z adresu 127.0.0.1 jest zaufane i nie pytamy o hasło!

3 – Plik należy zapisać. Żeby zmiany zostały wczytane przez PostgreSQL server, trzeba go zrestartować. Najpierw poszukaj programu services.msc. Kliknij na start i wpisz services.msc, a następnie klinij na services (w przypadku systemu operacyjnego z językiem polskim program nazywa się usługi):

4 – Teraz odszukaj usługi o nazwie PostgreSQL i uruchom ją ponownie:

5 –  Pozostaje połączyć się do serwera i zmienić hasło. Możesz to zrobić z linii komend. Kliknij na start i wpisz cmd.exe. W cmd podaj ścieżkę dostępu do programu psql.exe i parametrami wskaż, że chcesz się połączyć do lokalnego serwera postgresql na porcie 5432 i na użytkownika postgres. Po połączeniu zmień hasło użytkownika postgres stosując polecenie ALTER USER postgres WITH PASSWORD 'password’;

6 – Hasło zostało zmienione. Zakończ sesję z postgresem i przywróć sprawdzanie hasła, tzn. przywróć oryginalną zawartość pliku pg_hba.conf i zrestartuj PostgreSQL jeszcze raz.

7 – Jeśli coś nie wyszło sprawdź w szczególności dane wprowadzone w pg_hba.conf: literówki itp. Możesz nawet wpisać słowo trust w kazdej linijce tego pliku zastępując aktualną zawartość, tylko pamiętaj, że taka konfiguracja jest w tym momencie bezbronna, tzn. nawet sesje zdalne mogą nie wymagać hasła. Trochę to ryzykowne, jeśli na serwerze są rzeczywiście jakieś ważne dane. Jeśli system jest zainstalowany na Unix, to logika kroków jest taka sama, tylko polecenia nieco inne 🙂

Komentarze są wyłączone

Autor: Rafał Kraik