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

AWS RDS PostgreSQL无法通过Node.js+Sequelize连接问题求助

解决Sequelize连接AWS RDS PostgreSQL的加密错误

问题分析

报错no pg_hba.conf entry for host "...", no encryption明确说明:你的Node.js/Sequelize连接请求未使用加密传输,但AWS RDS PostgreSQL实例的pg_hba.conf配置要求必须通过SSL加密连接。

而psql能成功连接,是因为psql在连接AWS RDS端点时,默认会自动启用SSL(或你的本地psql配置中已设置sslmode=require),满足了RDS的加密要求。

解决方案

在Sequelize的配置中添加SSL强制启用选项,具体修改你的数据库配置代码:

const { Sequelize } = require("sequelize");
const { PGHOST, PGUSER, PGDATABASE, PGPASSWORD } = require("../../env");

const sequelize = new Sequelize(PGDATABASE, PGUSER, PGPASSWORD, {
    host: PGHOST,
    dialect: "postgres",
    operatorsAliases: 0,
    logging: false,
    pool: {
        max: 5,
        min: 0,
        acquire: 30000,
        idle: 10000,
    },
    // 添加以下SSL配置
    dialectOptions: {
        ssl: {
            require: true,
            rejectUnauthorized: false // AWS RDS使用自签名证书,本地无需验证
        }
    }
})

const connectionTest = async () => {
    try {
        await sequelize.authenticate();
        console.log('Connection has been established successfully.');
    } catch (error) {
        console.error('Unable to connect to the database:', error);
    }
}
connectionTest()

补充说明

  • require: true:强制Sequelize使用SSL连接,匹配RDS的加密要求
  • rejectUnauthorized: false:跳过证书验证,因为AWS RDS的PostgreSQL实例使用官方自签名证书,本地环境默认无对应根证书信任链,开启此选项可避免证书验证失败。若你的环境已配置AWS根证书信任,也可设置为true并指定证书路径。

内容的提问来源于stack exchange,提问作者Abhinay Narayan Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 12:10:14