Sua conexão falhou porque, por padrão, se psql
conecta por soquetes UNIX usando peer
autenticação, o que exige que o usuário UNIX atual tenha o mesmo nome de usuário psql
. Portanto, você terá que criar o usuário UNIX dev
e, em seguida, efetuar login como dev
ou usar sudo -u dev psql test_development
para acessar o banco de dados (e nãopsql
deve solicitar uma senha).
Se você não pode ou não deseja criar o usuário UNIX, como se você deseja apenas conectar-se ao seu banco de dados para consultas ad hoc , forçar uma conexão de soquete usando psql --host=localhost --dbname=test_development --username=dev
(conforme indicado pela resposta do @meyerson) resolverá o seu problema imediato.
Mas se você pretende forçar a autenticação de senha nos soquetes Unix em vez do método de mesmo nível, tente alterar a seguinte pg_hba.conf
linha *:
de
# TYPE DATABASE USER ADDRESS METHOD
local all all peer
para
# TYPE DATABASE USER ADDRESS METHOD
local all all md5
peer
significa que confiará na identidade (autenticidade) do usuário UNIX. Portanto, não solicitando uma senha.
md5
significa que sempre solicitará uma senha e a validará após fazer o hash com MD5
.
Obviamente, você também pode criar regras mais específicas para um banco de dados ou usuário específico, com alguns usuários tendo peer
e outros exigindo senhas.
Depois de mudar pg_hba.conf
se o PostgreSQL está em execução, você precisará reler a configuração recarregando ( pg_ctl reload
) ou reiniciando ( sudo service postgresql restart
).
* O arquivo pg_hba.conf
provavelmente estará em/etc/postgresql/9.x/main/pg_hba.conf
Editado: Comentários de @Chloe, @JavierEH, @Jonas Eicher, @fccoelho, @Joanis, @Uphill_What comentários incorporados na resposta.