← 中文资源

简体中文版本

Postgres 28P01: 密码认证失败

修复 PostgreSQL 的 28P01 密码认证失败:检查 pg_hba.conf 规则、密码编码与连接串参数。

阅读英文原文

症状

连接失败并报 FATAL: password authentication failed for user "app"。它可能在服务器上用 psql 正常,但从应用主机连接却失败,指向认证规则或连接串。

诊断

查看匹配规则并直接验证凭据:

PGPASSWORD='secret' psql -h db.internal -U app -d appdb -c 'SELECT 1'
SELECT * FROM pg_hba_file_rules;

修复

重设密码并对齐规则:

ALTER ROLE app WITH PASSWORD 's3cret';
SELECT pg_reload_conf();

在 URL 连接串中对特殊字符做百分号编码:

postgresql://app:p%[email protected]:5432/appdb

验证

用同一凭据分别通过 psql 与应用连接;二者都成功,且 pg_hba_file_rules 为连接主机列出了基于密码的认证方式。