La connessione non è riuscita perché, per impostazione predefinita, si psqlconnette tramite socket UNIX mediante l' peerautenticazione, il che richiede all'utente UNIX corrente di avere lo stesso nome utente psql. Quindi dovrai creare l'utente UNIX deve quindi accedere come devo utilizzare sudo -u dev psql test_developmentper 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
peersignifica che si fiderà dell'identità (autenticità) dell'utente UNIX. Quindi non chiedere una password.
md5significa 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 peere altri che richiedono password.
Dopo aver modificato pg_hba.confse PostgreSQL è in esecuzione, dovrai farlo rileggere la configurazione ricaricando ( pg_ctl reload) o riavviando ( sudo service postgresql restart).
* Il file pg_hba.confsarà 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.