Node.js连接AWS RDS PostgreSQL时出现no pg_hba.conf错误怎么办?
解决AWS RDS PostgreSQL与Node.js Sequelize连接的加密问题
问题分析
你遇到的错误no pg_hba.conf entry for host <my-ip>, user <username>, database <db>, no encryption,本质是AWS RDS PostgreSQL实例要求加密连接,但你的Sequelize配置未启用SSL;而终端的psql命令会自动适配RDS的加密要求,所以能正常连接。
解决方案
方案1:修改Sequelize配置添加SSL选项
更新你的database.ts配置,在Sequelize初始化时添加dialectOptions启用SSL:
import { Sequelize } from 'sequelize'; const dbUrl:string = process.env.POSTGRES_URL || ''; const sequelize: Sequelize = new Sequelize(dbUrl, { dialect: 'postgres', dialectOptions: { ssl: { require: true, // 若需验证AWS根证书,可下载官方根证书后指定ca路径;否则设为false跳过验证 rejectUnauthorized: false } } }); export default sequelize;
方案2:在连接URL中添加SSL参数
直接修改.env中的POSTGRES_URL,追加SSL模式参数:
POSTGRES_URL=postgres://<username>:<password>@<end-point>:5432/<db>?sslmode=require
验证
修改完成后重新执行npm run dev,若配置正确,应用将成功连接到RDS数据库。
内容的提问来源于stack exchange,提问作者Tauseef Razaq
相关产品推荐
相关产品推荐

