Połączenie nie powiodło się, ponieważ domyślnie psqlłączy się przez gniazda UNIX przy użyciu peeruwierzytelniania, co wymaga, aby bieżący użytkownik UNIX miał taką samą nazwę użytkownika jak psql. Musisz więc utworzyć użytkownika UNIX, deva następnie zalogować się jako użytkownik devlub użyć go w sudo -u dev psql test_developmentcelu uzyskania dostępu do bazy danych (i niepsql należy prosić o hasło).
Jeśli nie możesz lub nie chcesz utworzyć użytkownika UNIX, na przykład jeśli chcesz się połączyć ze swoją bazą danych w celu zapytań ad hoc , wymuszenie połączenia przez gniazdo za pomocą psql --host=localhost --dbname=test_development --username=dev(jak wskazano w odpowiedzi @meyerson) rozwiąże natychmiastowy problem.
Ale jeśli zamierzasz wymusić uwierzytelnianie hasła przez gniazda Unix zamiast metody peer, spróbuj zmienić następującą pg_hba.conf* linię:
z
# TYPE DATABASE USER ADDRESS METHOD
local all all peer
do
# TYPE DATABASE USER ADDRESS METHOD
local all all md5
peeroznacza, że będzie ufać tożsamości (autentyczności) użytkownika UNIX. Więc nie pytaj o hasło.
md5oznacza, że zawsze poprosi o hasło i zweryfikuje je po zaszyfrowaniu MD5.
Możesz oczywiście również stworzyć bardziej szczegółowe reguły dla konkretnej bazy danych lub użytkownika, przy czym niektórzy użytkownicy mają, peera inni wymagają hasła.
Po zmianie, pg_hba.confczy PostgreSQL jest uruchomiony, musisz ponownie odczytać konfigurację poprzez ponowne załadowanie ( pg_ctl reload) lub ponowne uruchomienie ( sudo service postgresql restart).
* Plik pg_hba.confnajprawdopodobniej będzie na/etc/postgresql/9.x/main/pg_hba.conf
Edytowane: Uwagi od @Chloe, @JavierEH, @Jasas Eicher, @fccoelho, @Joanis, @Uphill_Co komentarze włączone do odpowiedzi.