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

Node.js连接AWS RDS PostgreSQL报错:no pg_hba.conf entry 求解

解决AWS RDS PostgreSQL连接"no pg_hba.conf entry"错误

核心原因

本地PostgreSQL连接正常,说明代码逻辑无问题,该错误通常是AWS RDS的网络访问限制或远程连接认证配置导致的,按以下步骤排查:

1. 检查RDS安全组入站规则

  • 登录AWS控制台,进入RDS服务,找到目标实例
  • 切换到「连接与安全性」标签,点击安全组ID进入EC2安全组页面
  • 编辑入站规则,添加一条规则:
    • 类型:PostgreSQL(端口5432)
    • 来源:填写你的本地公网IP(格式如xxx.xxx.xxx.xxx/32);测试阶段可临时设为0.0.0.0/0,生产环境务必改为指定IP
  • 保存规则

2. 确认RDS实例公共可访问性

  • 在RDS实例的「连接与安全性」页面,检查「公共可访问性」是否为「是」
  • 若为「否」,修改为「是」并重启实例生效

3. 验证数据库用户认证方式

  • 通过psql或pgAdmin连接到RDS PostgreSQL实例
  • 执行查询:
    SELECT usename, authmethod FROM pg_user;
    
  • 确保你的连接用户的authmethod为md5或scram-sha-256(peer/ident仅支持本地连接,不适用远程访问)
  • 若需修改,进入RDS参数组,将password_encryption设为scram-sha-256,重启实例后重新设置用户密码

4. 调整Node.js连接配置

AWS RDS默认强制SSL连接,可在连接配置中显式添加SSL参数:

const pool = new Pool({
  host: process.env.PG_DB_HOST,
  port: process.env.PG_DB_PORT,
  user: process.env.PG_DB_USER,
  password: process.env.PG_DB_PASSWORD,
  database: process.env.PG_DB_DATABASE,
  ssl: { rejectUnauthorized: false }
});

同时确认.env文件中的PG_DB_HOST是RDS实例的完整端点(如xxx.xxxx.us-east-1.rds.amazonaws.com),端口为5432(默认值,若修改过需对应)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 05:42:11