Isso significa que o Postgres está tentando autenticar um usuário usando o protocolo Ident e não pode. A autenticação de identificação funciona assim:
- Você tem a função de banco de dados 'foo' no banco de dados 'db'
- Seu
pg_hba.conf
arquivo (in /etc/postgres-something/main
) define 'Ident' como o protocolo para conectar-se ao banco db
de dados para usuários que se conectam a partir de determinados hosts
- O nome de usuário unix que faz a conexão é 'foo'
- Um servidor Ident em execução na máquina da qual o usuário está se conectando confirma que o nome de usuário realmente é 'foo'
Possíveis causas e soluções:
- Não há um 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
. Como alternativa, adicione uma entrada em /etc/postgresql/.../main/pg_ident.conf
.
- 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 durante uma conexão 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:
host all all 127.0.0.1/32 ident
para
host all all 127.0.0.1/32 md5
/var/lib/psql/data
Não tenho certeza sobre as causas, mas isso corrigiu para mim:
em
pg_hba.conf
mude para isso:
Erro exato:
Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"
fonte
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á bem ...
fonte
Se você ainda não tentou isso, verifique seu arquivo pg_hba.conf. Será nomeado algo como /var/lib/pgsql/9.3/data/pg_hba.conf (Fedora 20); você pode precisar usar 'find / -name pg_hba.conf' para localizá-lo.
Na parte inferior do arquivo, altere os valores 'METHOD' para 'trust' para testes locais (consulte os documentos do postgres para obter informações completas). Reinicie a máquina para garantir que tudo esteja limpo e que os novos parâmetros sejam lidos.
Espero que isso cure suas desgraças. Ele resolveu meus problemas no Fedora 20 com o PostgreSQL 9.3.
fonte
pg_ctl reload
no console ouSELECT pg_reload_conf();
ao executar o SQL como um usuário privilegiado.