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 dadosdb
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:
- 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
). - 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
. - 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.
-
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