heroku Postgres - 续集:主机没有 pg_hba.conf 条目
Posted
技术标签:
【中文标题】heroku Postgres - 续集:主机没有 pg_hba.conf 条目【英文标题】:heroku Postgres - sequelize : no pg_hba.conf entry for host 【发布时间】:2020-07-29 23:09:08 【问题描述】:我正在尝试使用 Heroku 免费的 Postgres 数据库在 Heroku 上托管的 Nodejs 应用程序上运行迁移。
我使用 Sequelize 作为我的 ORM。这是我的生产连接配置。
const dotenv = require('dotenv');
dotenv.config();
module.exports =
production:
use_env_variable: 'DATABASE_URL',
dialect: process.env.DIALECT,
protocol: process.env.DIALECT,
当我使用上述配置时,我得到以下错误:no pg_hba.conf entry for host "000.000.000.0", user "yyyyyyyyyyyyyy", database "xxxxxxxxxxxxx", SSL off
但是,当我将以下选项添加到配置时,我收到自签名证书错误。
dialectOptions:
ssl: true
请问,我该如何解决?
【问题讨论】:
【参考方案1】:将您的 dialectOptions 更改为:
dialectOptions:
ssl:
rejectUnauthorized: false
【讨论】:
【参考方案2】:正如this related answer 中所解释的,设置rejectUnauthorized: false
是一个坏主意,因为它允许您创建与数据库的非加密连接,从而使您受到 MITM 攻击(中间人攻击) )。
更好的解决方案是为您的 Postgres 客户端提供您希望它使用的 CA。在我的例子中,它是 AWS RDS 用于北弗吉尼亚地区 (us-east-1) 的 CA。我从this AWS page 下载了 CA,将它放在与我想用来连接数据库的文件相同的目录中,然后将我的配置修改为:
...
dialectOptions:
ssl:
require: true,
ca: fs.readFileSync(`$__dirname/us-east-1-bundle.pem`),
,
,
【讨论】:
以上是关于heroku Postgres - 续集:主机没有 pg_hba.conf 条目的主要内容,如果未能解决你的问题,请参考以下文章