La connessione non è riuscita perché, per impostazione predefinita, si psql
connette tramite socket UNIX mediante l' peer
autenticazione, il che richiede all'utente UNIX corrente di avere lo stesso nome utente psql
. Quindi dovrai creare l'utente UNIX dev
e quindi accedere come dev
o utilizzare sudo -u dev psql test_development
per accedere al database (e nonpsql
dovresti chiedere una password).
Se non è possibile o non si desidera creare l'utente UNIX, come se si desidera semplicemente connettersi al database per query ad hoc , forzare una connessione socket utilizzando psql --host=localhost --dbname=test_development --username=dev
(come sottolineato dalla risposta di @meyerson) risolverà il problema immediato.
Ma se si intende forzare l'autenticazione della password sui socket Unix anziché sul metodo peer, provare a modificare la seguente pg_hba.conf
* linea:
a partire dal
# TYPE DATABASE USER ADDRESS METHOD
local all all peer
per
# TYPE DATABASE USER ADDRESS METHOD
local all all md5
peer
significa che si fiderà dell'identità (autenticità) dell'utente UNIX. Quindi non chiedere una password.
md5
significa che chiederà sempre una password e la convaliderà dopo aver eseguito l'hashing con MD5
.
Naturalmente, puoi anche creare regole più specifiche per un determinato database o utente, con alcuni utenti che hanno peer
e altri che richiedono password.
Dopo aver modificato pg_hba.conf
se PostgreSQL è in esecuzione, dovrai farlo rileggere la configurazione ricaricando ( pg_ctl reload
) o riavviando ( sudo service postgresql restart
).
* Il file pg_hba.conf
sarà probabilmente su/etc/postgresql/9.x/main/pg_hba.conf
A cura di: commenti da @Chloe, @JavierEH, @Jonas Eicher, @fccoelho, @Joanis, @Uphill_Quali commenti integrati nella risposta.