Eu tenho o seguinte cenário:
saji@geeklap:~$ psql -U postgres
psql: FATAL: Ident authentication failed for user "postgres"
saji@geeklap:~$ psql -h localhost -U postgres
Password for user postgres:
psql (8.4.14)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.
postgres=#
Estou tentando fazer login no postgresql
servidor instalado no meu sistema como usuário postgres
. Só consigo fazer login se eu especificar -h localhost
. Considerando que a psql
documentação diz que:
Se você omitir o nome do host, o psql se conectará por meio de um soquete de domínio Unix a um servidor no host local ou via TCP / IP ao host local em máquinas que não possuam soquetes de domínio Unix.
Ref: http://www.postgresql.org/docs/current/static/app-psql.html#R2-APP-PSQL-CON
Por que não consigo fazer login sem especificar o host? Existe algum arquivo de configuração que precisa de alguma alteração para que as coisas ocorram, conforme descrito na psql
documentação?
postgresql
12.04
saji89
fonte
fonte
.psqlrc
que especifique os padrões - ou apenas editepg_hba.conf
para usar amd5
autenticação paralocal
conexões (soquete unix). Veja a documentação parapg_hba.conf
epsql
.Respostas:
De fato, funciona como documentado.
Quando o nome do host é omitido, ele se
psql
conecta ao soquete do domínio Unix, cujo caminho é compilado. Essa parte funciona no seu caso; caso contrário, seria exibida uma mensagem de erro diferente da que a pergunta mostra.A mensagem de erro na pergunta:
está relacionado ao fato de que apenas o usuário postgres do Unix tem permissão para se conectar como usuário postgres ao usar um soquete de domínio Unix. Isso está configurado no
pg_hba.conf
arquivoo que você normalmente deve fazer no Ubuntu quando estiver logado como usuário normal, mas você é o administrador do sistema:
fonte
sudo -u postgresql psql
parasudo -u postgres psql
. Eu tentei editar. Mas não foi possível, pois a edição tem apenas <6 caracteres.Se você não gosta do padrão de conexão através de um soquete unix, pode definir a variável de ambiente
PGHOST
. eu tenhono meu
~/.bashrc
, para conectar ao servidor com esse nome. Algumas variáveis de ambiente mais práticas estão documentadas em http://www.postgresql.org/docs/9.5/static/libpq-envars.htmlfonte