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

NodeJS连接PostgreSQL 15.2失败求助:pg_hba.conf无加密条目错误

解决Node.js连接PostgreSQL 15.2(RDS)的"no pg_hba.conf entry...no encryption"错误

问题核心

PostgreSQL 15默认强化了连接安全要求,RDS的PostgreSQL 15可能默认启用了强制SSL,旧配置未指定正确的SSL参数导致连接被拒绝。

解决方案

1. 修正pg模块的连接配置

你使用的是pg模块的Pool,正确的SSL配置需直接在config中添加ssl对象(dialectOptions是Sequelize专属配置,不适用于原生pg模块)。修改后的配置如下:

const config = {
    user: process.env.PG_DB_USERNAME,
    password: process.env.PG_DB_PASSWORD,
    database: process.env.PG_DB_NAME,
    host: process.env.PG_DB_HOST,
    port: process.env.PG_DB_PORT,
    ssl: {
        rejectUnauthorized: false // 适配RDS自签名证书,若需严格验证可指定证书路径
    }
}
const pool = new Pool(config)

补充:如果你的RDS配置了自定义CA证书,可将rejectUnauthorized设为true,并添加证书验证参数:

ssl: {
  rejectUnauthorized: true,
  ca: fs.readFileSync('/path/to/rds-ca-cert.pem').toString()
}

2. 检查RDS PostgreSQL的SSL强制设置

登录AWS控制台进入目标RDS实例:

  • 切换到配置标签,查看rds.force_ssl参数是否设为1(此状态下强制要求SSL连接)
  • 若参数为1,必须确保客户端SSL配置正确;若需允许非SSL连接(不推荐生产环境),可将rds.force_ssl改为0并重启实例

3. 验证RDS安全组规则

确认你的EC2/本地IP已被添加到RDS安全组的入站规则中,允许PostgreSQL默认端口(5432)的流量通过。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:43:22