Uwierzytelnianie hasłem Postgres kończy się niepowodzeniem

36

Zainstalowałem PostgreSQL 9.1 i pgadmin3 na Ubuntu Server 13.10.

Skonfigurowałem postgresql.conf z: listen_addresses = '*'

skonfigurowałem także ph_hba.conf, zmieniając połączenia peer z md5

Plus resetuję hasło postgres poprzez: sudo password postgres

następnie ponownie uruchomiłem usługę za pomocą sudo /etc/init.d/postgresql restart

potem próbowałem połączyć się z domyślną bazą danych szablonów PostgreSQL:

sudo -u postgres psql template1

ale logowanie nie powiodło się przy tym komunikacie o błędzie:

psql: FATAL:  password authentication failed for user "postgres"

następnie próbowałem zalogować się z pgadmin, co dało mi ten sam błąd.

Przeczytałem tutaj, że może to być błąd daty wygaśnięcia hasła Użytkownik PostgreSQL nie może połączyć się z serwerem po zmianie hasła

ale nie mogłem tego rozwiązać, ponieważ nie mogę się zalogować za pomocą psql. Czy ktoś teraz jak rozwiązać ten problem?

EDYTOWAĆ

plik ph_hba:

tutaj

Zrzut ekranu:

wprowadź opis zdjęcia tutaj

Shadin
źródło
7
Jestem zirytowany faktem, że sklonowałeś ten post. Właśnie napisałem odpowiedź na to, aby odkryć, że wysłałeś identyczne pytanie do stackoverflow.com, które już ma zaakceptowaną odpowiedź. Nie kopiuj i nie wklejaj odpowiedzi między witrynami, marnujesz czas wszystkich i utrudniasz wyszukiwanie informacji. Jeśli nalegasz, aby to zrobić, utwórz łącza między nimi.
Craig Ringer

Odpowiedzi:

66

Mylisz hasło dla użytkownika unix „postgres” z hasłem bazy danych dla użytkownika bazy danych „postgres”. To nie to samo.

Zablokowałeś się, ponieważ włączyłeś md5uwierzytelnianie dla użytkownika bazy danych postgresbez ustawiania hasła dla użytkownika bazy danych postgres.

Dodaj nową linię na górze pg_hba.conf:

local    postgres     postgres     peer

następnie uruchom ponownie / przeładuj PostgreSQL i:

sudo -u postgres psql

Z wyświetlonego monitu:

ALTER USER postgres PASSWORD 'my_postgres_password';

następnie usuń linię, do której dodałeś pg_hba.confi ponownie uruchom Pg. Możesz teraz użyć hasła ustawionego powyżej, aby połączyć się z PostgreSQL jako postgresużytkownik.

Aby dowiedzieć się więcej, przeczytaj rozdział „Uwierzytelnianie klienta” w podręczniku użytkownika i dokumentację napg_hba.conf .

Craig Ringer
źródło
1
Testowanie nowego pg9.6.6 na serwerze UBUNTU 16 LTS .... I byłem zaskoczony tymi wszystkimi „problemami dla początkujących”. Przyjedź tutaj z rozwiązaniem ... krok po kroku ... Wielka niespodzianka: nie działa! psql -W postgresql://postgres:postgres@localhostprodukowanie ponownie tego samego „FATAL: uwierzytelnienie hasła nie powiodło się dla użytkownika„ postgres ””
Peter Krauss
Rozwiązanie: działa zaufanie wszystkich linii ...
Peter Krauss,
Używam ssh ... Po odłożeniu wszystkich z powrotem na md5, jeden po drugim (lokalny, lokalny, host ...), tylko wiersz „hostuj wszystko 127.0.0.1/32 zaufanie” nie może się zmienić, został zachowany z „ zaufanie". Nowe pytanie: dlaczego?
Peter Krauss,
pg_hba.confplik jest własnością użytkownika systemu postgres. Znam tylko hasło do bazy danych użytkownika bazy danych postgres, więc pytanie brzmi: jak edytować ten plik conf bez zmiany jego właściciela?
Shailen,
Czy możesz powiedzieć, do czego local postgres postgres peernaprawdę potrzebowała linia pg_hba.conf? Bez niego wszystko działa dobrze
MaxCore
3

Spróbuj zmodyfikować hasło szablonu bazy danych1, używając tego:

$ psql -c "ALTER USER postgres WITH PASSWORD 'yourPassword'" -d template1
pfugazza
źródło
Dał mi ten sam błąd, ale z użytkownikiem „root” zamiast użytkownika „postgres”
Shadin
Czy możesz wyjaśnić, dlaczego to może pomóc?
xliiv,
2

w twoim pg_hba.conf

# IPv4 local connections:
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
host    all         all         127.0.0.1/32         trust

jeśli to nie działa, spróbuj

host    all         all         your_ip/32         trust

następnie zrestartuj bazę danych, to będzie działało dobrze. Jeśli zaufasz, nie będziesz potrzebować hasła, jeśli utworzysz MD5, wtedy poprosi o hasło ...

smn_onrocks
źródło
3
nigdzie nie stosuj tego podejścia, zawsze powinieneś ograniczać dostęp użytkowników do twoich danych
Most Wanted
chyba że korzystasz z serwera CTF.
Pathfinder