Eu tentei usar variável do host PGPASSWORD
e .pgpass
e nenhum destes dois vai permitir-me para autenticar no banco de dados. Eu tenho chmod
'd .pgpass
para permissões apropriadas e também tentou:
export PGPASSWORD=mypass and PGPASSWORD=mypass
A senha contém um \
no entanto, eu estava colocando-a entre aspas simples PGPASS='mypass\'
e ainda não autenticou.
Estou correndo:
pg_dump dbname -U username -Fc
e eu ainda recebo
pg_dump: [archiver (db)] connection to database "dbname" failed: FATAL: Peer authentication failed for user "username"
postgresql
pg-dump
Kosmonaut
fonte
fonte
Respostas:
A Solução Rápida
O problema é que ele está tentando realizar a
peer
autenticação local com base em seu nome de usuário atual. Se desejar usar uma senha, você deve especificar o nome do host com-h
.Explicação
Isso se deve ao seguinte em seu
pg_hba.conf
Isso diz ao Postgres para usar
peer
autenticação para usuários locais, o que requer o nome de usuário do postgres para corresponder ao seu nome de usuário do sistema atual. A segunda linha refere-se a conexões usando um nome de host e permitirá que você autentique com uma senha por meio domd5
método.Minha configuração de desenvolvimento preferida
NOTA : Isso só deve ser usado em estações de trabalho de usuário único. Isso pode levar a uma grande vulnerabilidade de segurança em uma máquina de produção ou multiusuário.
Ao desenvolver em uma instância local do postgres, gosto de alterar meu método de autenticação local para
trust
. Isso permitirá a conexão com o postgres por meio de um soquete unix local como qualquer usuário sem senha. Isso pode ser feito simplesmente alterandopeer
acimatrust
e recarregando o postgres.fonte
sudo locate pg_hba.conf
- ele tem que ser sudo, já que o usuário postgres será o único com acesso ao diretório (eu acho).Às vezes você pode usar
fonte