You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用主账号密码无法连接AWS RDS Postgresql但pgAdmin可正常连接

RDS PostgreSQL密码登录失败问题修复方案

根因分析

从返回的报错信息可以直接定位两个核心问题:

psql: error: FATAL: PAM authentication failed for user "user"
FATAL: pg_hba.conf rejects connection for host "111.11.1.11", user "user", database "database", SSL off

  • 你的RDS实例开启了强制SSL连接,pg_hba.conf规则直接拒绝所有未开启SSL的连接请求,你执行的默认psql命令未携带SSL参数,因此被拦截。
  • 你的RDS实例同时启用了IAM数据库身份认证,默认会优先走PAM模块校验IAM令牌,密码认证逻辑被拦截,因此修改主密码也无法生效。
  • 网站报连接超时的原因是网站的数据库连接配置未开启SSL,也没有配置IAM令牌认证逻辑,符合上述认证失败的规则。

你已执行nc -zv rds_endpoint 5432返回连通成功,说明安全组、网络ACL、路由配置均正常,无需调整网络规则。

修复步骤

1. 临时验证SSL+密码登录

给psql命令添加SSL开启参数,执行如下命令验证密码是否有效:

psql --host=rds_endpoint --port=5432 --username=user --password --dbname=database --sslmode=require

如果执行后可以正常登录,说明仅为SSL未开启的问题;如果依然返回PAM认证失败,说明IAM认证已覆盖密码认证逻辑,需要调整RDS配置。

2. 调整RDS认证规则

登录AWS RDS控制台,进入对应实例的配置页:

  • 若无需使用IAM认证,直接关闭「IAM数据库身份认证」选项,重启实例后密码登录即可恢复生效。
  • 若需要同时保留IAM认证和密码认证,修改实例关联的参数组中pg_hba.conf规则,新增一条允许SSL连接下密码认证的规则,调整优先级高于PAM认证规则即可。

3. 修复网站连接配置

  • 给网站的数据库连接配置新增SSL参数,开启SSL校验并关联RDS官方根CA证书。
  • 若选择保留IAM认证方式,需要在网站代码中添加定时生成IAM数据库令牌的逻辑,替换原有固定密码配置。

内容的提问来源于stack exchange,提问作者yaros

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 12:39:01