Mensagem de erro do Postgres: FATAL: Autenticação ident falhou para o usuário “…”

16

Digamos que você esteja vendo esta mensagem:

FATAL:  Ident authentication failed for user "..."

Quais são as causas dessa mensagem de erro?

    
por Steve Bennett 11.07.2012 / 02:44

4 respostas

28

Isso significa que o Postgres está tentando autenticar um usuário usando o protocolo Ident e não pode. Ident auth funciona assim:

  • Você tem a função de banco de dados 'foo' no banco de dados 'db'
  • Seu arquivo pg_hba.conf (em /etc/postgres-something/main ) define 'Ident' como o protocolo para se conectar ao banco de dados db para usuários que se conectam de determinados hosts
  • O nome de usuário do unix que faz a conexão é 'foo'
  • Um servidor de Ident em execução na máquina à qual o usuário está se conectando confirma que seu nome de usuário é realmente 'foo'

Possíveis causas e soluções:

  1. Não há nenhum servidor Ident sendo executado na máquina que você está tentando se conectar. Teste isso tentando conectar-se a ele na porta 113. Se isso falhar, instale um servidor Ident (por exemplo, sudo apt-get install oidentd ).
  2. Há um servidor Ident, mas não há nenhuma função de banco de dados correspondente ao nome com o qual você está tentando se conectar ('foo' no exemplo acima). Então, crie-o conectando-se de alguma forma ao banco de dados com direitos de superusuário e faça CREATE ROLE foo . Como alternativa, adicione uma entrada para /etc/postgresql/.../main/pg_ident.conf .
  3. Talvez o nome de usuário do shell não corresponda à função do banco de dados. Você pode testar isso conectando-se ao servidor Ident enquanto uma conexão está acontecendo, e passando os números de porta corretos.
  4. Talvez você realmente queira se conectar com uma senha , e não Ident. Edite o arquivo pg_hba.conf apropriadamente. Por exemplo, mude:

    host all all 127.0.0.1/32 ident
    

    para

    host all all 127.0.0.1/32 md5
    
por 11.07.2012 / 02:44
7

Não tenho certeza sobre as causas, mas isso me corrigiu:

em pg_hba.conf

mude para isto:

host all all 127.0.0.1/32 md5

Erro exato: Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"

    
por 10.09.2012 / 17:21
3

No CentOS, adicione a seguinte linha a /var/lib/pgsql/9.3/data/pg_hba.conf :

host all all 127.0.0.1/32 trust

E comente as outras entradas.

É claro que essa configuração não é segura, mas se você está mexendo em uma VM de desenvolvimento como eu, provavelmente está tudo bem ...

    
por 14.07.2014 / 13:11
0

Se você ainda não tentou isso, revise seu arquivo pg_hba.conf. Será nomeado algo como /var/lib/pgsql/9.3/data/pg_hba.conf (Fedora 20); você pode ter que usar 'find / -name pg_hba.conf' para localizá-lo.

Na parte inferior do arquivo, altere os valores de 'METHOD' para 'confiar' para testes locais (consulte documentos postgres para obter informações completas). Reinicialize a máquina para garantir que tudo esteja limpo e os novos parâmetros sejam lidos.

Espero que isso cure suas aflições. Ele resolveu meus problemas no Fedora 20 com o PostgreSQL 9.3.

    
por 26.07.2014 / 02:59