AWS RDS PostgreSQL连接报错:无pg_hba.conf条目及密码验证失败
解决AWS RDS PostgreSQL连接异常的实操步骤
错误核心指向
你遇到的两个报错对应两个关键问题:
postgres用户密码认证失败- 客户端未使用加密连接,而RDS实例的安全策略拒绝无加密请求
排查与修复动作
1. 修正连接字符串格式错误
你的连接字符串中<password>:@存在多余的@符号,这会导致密码解析异常,直接引发认证失败。正确格式如下:
engine_sync = create_engine( "postgresql://<user>:<password>@database-2.<xxx>.eu-west-1.rds.amazonaws.com/postgres" )
2. 强制启用SSL连接
报错提示no pg_hba.conf entry... no encryption,说明RDS实例要求加密连接,而你的客户端未开启SSL。修改连接字符串添加SSL参数:
engine_sync = create_engine( "postgresql://<user>:<password>@database-2.<xxx>.eu-west-1.rds.amazonaws.com/postgres?sslmode=require" )
同时可登录AWS控制台,检查RDS实例的rds.force_ssl参数是否设为1(强制SSL),该参数开启时必须使用加密连接。
3. 验证用户密码有效性
即使未主动修改密码,也可能出现以下情况:
- 密码过期:通过RDS控制台的「查询编辑器」尝试用
postgres用户登录,确认密码是否可用 - 权限变更:检查
postgres用户是否被限制了从当前IP的连接权限,或认证方式被修改
4. 检查安全组与IP规则
确认你的公网IP(报错中的<my ip>)在RDS实例的安全组入站规则中,允许5432端口访问。动态公网IP可能会自动变更,导致原有规则失效。
5. 确认RDS实例状态
登录AWS控制台查看eu-west-1区域的RDS实例,是否存在重启、故障恢复或AWS后台维护记录,这类操作可能导致临时配置变动。
内容的提问来源于stack exchange,提问作者Rony Tesler
相关产品推荐
相关产品推荐

