TypeORM连接AWS RDS提示Database connection failed报错排查
可按优先级排查以下常见原因:
网络层问题(出现概率最高)
- RDS安全组入站规则未放行:请确认RDS关联的安全组入站规则中,开放了5432端口,且源地址包含你运行代码的设备/服务的IP段。如果是本地运行请添加你的公网IP, 如果是AWS内部服务(EC2/ECS/Lambda等)运行请添加对应服务的安全组ID作为源。
- RDS公网访问未开启:如果你的代码是在AWS VPC外部运行(比如本地开发环境),请确认RDS实例的「公共可访问性」属性已设置为「是」,否则VPC外网络无法直接连通RDS。
- 网络ACL/路由规则限制:如果代码部署在AWS VPC内部,请检查对应子网的网络ACL是否放行5432端口的出入站流量,路由表配置是否正确。
- 本地/运营商端口封禁:可以先在运行代码的设备上执行
nc -zv <你的RDS域名> 5432测试网络连通性,如果连不通就是网络层面问题,先排查到能连通为止再检查配置问题。
配置层问题
- 缺少SSL连接配置:AWS RDS PostgreSQL默认要求SSL连接,你的现有配置没有开启SSL,可在ormconfig中添加
ssl: { rejectUnauthorized: false }临时测试,验证是SSL问题后再替换为AWS官方根证书配置保证安全。 - 配置参数未正确替换:你贴出的配置中数据库连接参数是硬编码值,请确认运行时从AWS Secrets Manager拉取到的参数已经正确覆盖了配置中的硬编码值,很多场景下环境变量注入失败会导致用了错误的硬编码参数发起连接。
- 数据库名称不匹配:请确认配置中的
database字段值和RDS实例创建时设置的初始数据库名一致,不要和AWS控制台中的RDS实例名混淆,二者是完全不同的配置。 - 账号权限问题:确认你用的postgres账号有从对应客户端IP登录的权限,没有被RDS的数据库层面规则限制登录。
内容的提问来源于stack exchange,提问作者Take
相关产品推荐
相关产品推荐

