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

无法通过Sequelize连接AWS RDS PostgreSQL问题求助

问题:Sequelize连接AWS RDS PostgreSQL失败,pg库连接正常

我使用pg库代码可成功连接AWS RDS PostgreSQL,但换成Sequelize后出现连接错误,错误提示如下:

no pg_hba.conf entry for host "118.70.42.38", user "postgres", database "My_first", no encryption

成功的pg库连接代码

import pg from "pg";
import dotenv from "dotenv";

dotenv.config();

(async () => {
  try {
    const client = new pg.Client({
      host: process.env.PG_HOST,
      port: process.env.PG_PORT,
      user: process.env.PG_USER,
      password: process.env.PG_PASSWORD,
      database: process.env.PG_DATABASE,
      ssl: true,
    });

    await client.connect();
    const res = await client.query("SELECT $1::text as connected", [
      "Connection to postgres successful!",
    ]);
    console.log(res.rows[0].connected);
    await client.end();
  } catch (error) {
    console.error("Error occurred:", error);
  }
})();

出错的Sequelize代码

import "dotenv/config.js";
import Sequelize from "sequelize";

const dbConfig = {
  HOST: process.env.PG_HOST,
  USER: process.env.PG_USER,
  PASSWORD: process.env.PG_PASSWORD + "",
  DB: process.env.PG_DATABASE,
  PORT: process.env.PG_PORT, 
  dialect: "postgres",
  // ssl: true,
  ssl: {
    rejectUnauthorized: false,
  },
};

console.log(dbConfig.USER);

const sequelize = new Sequelize(dbConfig.DB, dbConfig.USER, dbConfig.PASSWORD, {
  host: dbConfig.HOST,
  port: dbConfig.PORT, 
  dialect: dbConfig.dialect,
});

const db = {};

db.Sequelize = Sequelize;
db.sequelize = sequelize;

export default db;

问题原因及解决方案

问题出在Sequelize实例化时未传递SSL配置。pg库直接设置ssl: true即可启用加密连接,但Sequelize需要将SSL配置明确传入构造函数的options参数中。AWS RDS要求SSL连接,未配置SSL的Sequelize连接会以明文方式请求,触发pg_hba.conf的限制导致报错。

修改Sequelize实例化代码,添加SSL配置:

const sequelize = new Sequelize(dbConfig.DB, dbConfig.USER, dbConfig.PASSWORD, {
  host: dbConfig.HOST,
  port: dbConfig.PORT, 
  dialect: dbConfig.dialect,
  // 适配Sequelize v5及以下版本
  ssl: dbConfig.ssl,
  // 适配Sequelize v6+版本(推荐同时添加,兼容不同版本)
  dialectOptions: {
    ssl: dbConfig.ssl
  }
});

这样配置后,Sequelize会以加密方式连接AWS RDS PostgreSQL,解决pg_hba.conf的报错问题。

内容的提问来源于stack exchange,提问作者Nghĩa Phạm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 04:47:08