症状
连接失败并报 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 为连接主机列出了基于密码的认证方式。