Połączenie nie powiodło się, ponieważ domyślnie psql
łączy się przez gniazda UNIX przy użyciu peer
uwierzytelniania, co wymaga, aby bieżący użytkownik UNIX miał taką samą nazwę użytkownika jak psql
. Musisz więc utworzyć użytkownika UNIX, dev
a następnie zalogować się jako użytkownik dev
lub użyć go w sudo -u dev psql test_development
celu 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
peer
oznacza, że będzie ufać tożsamości (autentyczności) użytkownika UNIX. Więc nie pytaj o hasło.
md5
oznacza, ż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ą, peer
a inni wymagają hasła.
Po zmianie, pg_hba.conf
czy PostgreSQL jest uruchomiony, musisz ponownie odczytać konfigurację poprzez ponowne załadowanie ( pg_ctl reload
) lub ponowne uruchomienie ( sudo service postgresql restart
).
* Plik pg_hba.conf
najprawdopodobniej 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.