PostgreSQL: Entendendo e Resolvendo o Erro "Peer authentication failed"#
Durante configuração de PostgreSQL em Linux, esse erro aparece com frequência em ambiente de produção e homologação:
psql -U domain_user -d app_database -W -c "\dt"
Retorno:
FATAL: Peer authentication failed for user "domain_user"
A senha está correta, o usuário existe, mas o acesso falha. O problema quase sempre é política de autenticação aplicada na conexão errada, não credencial inválida.
2) Onde isso é definido: pg_hba.conf#
No Linux, em geral:
/etc/postgresql/{VERSION}/main/pg_hba.conf
Linha típica responsável pelo comportamento:
# TYPE DATABASE USER METHOD
local all all peer
Tradução operacional:
local= socket Unix (conexão sem-h);peer= valida por identidade do SO, não por senha.
4) Estratégias de correção (com prós e contras)#
Opção 1 - executar como usuário Linux correspondente#
Se o modelo do ambiente for execução local controlada, a correção mais direta é alinhar usuário SO com usuário DB:
sudo -u domain_user psql -d app_database
Quando uso: scripts internos, automações locais, operação root->service account.
Opção 3 - migrar regra para scram-sha-256 (recomendado produção)#
Para aplicações fullstack e serviços que exigem senha forte localmente, a correção definitiva é ajustar o método no pg_hba.conf.
Exemplo:
local all domain_user scram-sha-256
Aplicação:
- Editar arquivo:
sudo nano /etc/postgresql/{VERSION}/main/pg_hba.conf
- Reiniciar serviço:
sudo systemctl restart postgresql
- Testar login:
psql -U domain_user -d app_database -W -c "select current_user;"
Nota de segurança#
Evite md5 em ambiente novo. scram-sha-256 é padrão moderno e mais resistente contra vetores de captura/replay em comparação ao legado.
6) Comparativo técnico dos métodos#
| Método | Usa senha? | Baseado no SO? | Uso indicado |
|---|---|---|---|
peer | Não | Sim | administração local via SSH e scripts internos controlados |
trust | Não | Não | laboratório temporário (nunca produção) |
scram-sha-256 | Sim | Não | aplicações, produção moderna, compliance |
Considerações práticas#
Peer authentication failed não é bug, é proteção funcionando.
O que resolve de forma definitiva é entender a hierarquia do pg_hba.conf, alinhar o método de autenticação ao tipo de conexão e aplicar padrão moderno (scram-sha-256) quando a aplicação depende de senha.
Esse é o ponto que separa "fazer funcionar" de operar PostgreSQL com previsibilidade e segurança em produção.
Este artigo foi útil?
Deixe uma reação rápida para apoiar o conteúdo:
Este post está licenciado sob CC BY-NC.



Comentários
Participe da discussão abaixo.
0 comentários