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 条目的主要内容,如果未能解决你的问题,请参考以下文章

在heroku中续集迁移

“用户未关联到提要!”续集

具有多个续集的 postgres 初始化代码

为表 Postgres 续集缺少的 FROM 子句条目

PG(node-postgres)VS。续集

连接到Heroku Postgres数据库需要很长时间