Digamos que você esteja vendo esta mensagem:
FATAL: Ident authentication failed for user "..."
Quais são as causas desta mensagem de erro?
Digamos que você esteja vendo esta mensagem:
FATAL: Ident authentication failed for user "..."
Quais são as causas desta mensagem de erro?
Isso significa que o Postgres está tentando autenticar um usuário usando o protocolo Ident e não consegue. Ident auth corresponde automaticamente aos nomes de usuário do Unix com os nomes de usuário do Postgres. Funciona assim:
pg_hba.conf
arquivo (em/etc/postgres-something/main
) define 'Ident' como o protocolo para se conectar ao banco de dadosdb
para usuários que se conectam de determinados hostsPossíveis causas e soluções:
Não há servidor Ident em execução na máquina da qual você está tentando se conectar. Teste isso tentando se conectar a ele na porta 113. Se isso falhar, instale um servidor Ident (por exemplo,
sudo apt-get install oidentd
).Há um servidor Ident, mas não há função de banco de dados correspondente ao nome com o qual você está tentando se conectar ('foo' no exemplo acima). Portanto, crie-o conectando-se de alguma forma ao banco de dados com direitos de superusuário e faça
CREATE ROLE foo
. Alternativamente, adicione uma entrada para/etc/postgresql/.../main/pg_ident.conf
(ou/var/lib/pgsql/12/data
ou onde quer que seja).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á em andamento e passando os números de porta corretos.
Talvez você realmente queira se conectar com uma senha , não com Ident. Edite o
pg_hba.conf
arquivo adequadamente. Por exemplo, altere:para
Certifique-se de reiniciar o Postgres após atualizar o
pg_hba.conf
arquivo. Você faz isso emitindo o seguinte comando:Não tenho certeza sobre as causas, mas isso corrigiu para mim:
dentro
pg_hba.conf
mude para isso:
Erro exato:
Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"
No CentOS, adicione a seguinte linha a
/var/lib/pgsql/9.3/data/pg_hba.conf
:E comente as outras entradas.
Claro, essa configuração não é segura, mas se você está apenas brincando em uma VM de desenvolvimento como eu, provavelmente está tudo bem ...
Para Centos 7, altere pg_hba.conf para abaixo:
Tente usar -h 127.0.0.1 em vez de -h localhost
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 'trust' para testes locais (consulte a documentação do postgres para obter informações completas). Reinicie a máquina para garantir que tudo seja iniciado limpo e que os novos parâmetros sejam lidos.
Espero que isso cure seus problemas. Resolveu meus problemas no Fedora 20 com PostgreSQL 9.3.