繁体   English   中英

我无法在 Heroku 上使用 Strapi 连接到 Postgres DB

[英]I can not connect to Postgres DB with Strapi on Heroku

尝试使用 Postgres 在 Heroku 上部署 Strapi,如此处所述

https://strapi.io/documentation/v3.x/deployment/heroku.html

但我得到这个错误

error: no pg_hba.conf entry for host "84.212.51.43", user "ssqqeaz***", database "d6gtu***", SSL off

我使用 Heroku Postgres 插件。

我的数据库配置:

module.exports = ({ env }) => ({
  defaultConnection: 'default',
  connections: {
    default: {
      connector: 'bookshelf',
      settings: {
        client: 'postgres',
        host: env('DATABASE_HOST', '127.0.0.1'),
        port: env.int('DATABASE_PORT', 27017),
        database: env('DATABASE_NAME', 'strapi'),
        username: env('DATABASE_USERNAME', ''),
        password: env('DATABASE_PASSWORD', ''),
      },
      options: {
        ssl: true
      },
    },
  },
});

为什么? 请帮忙!

尝试将ssl: true更改为ssl: false

您发布的当前配置不适用于 Heroku Postgres 数据库。 这里主要关注的是您正在从手动设置的配置变量中读取您的 postgres 数据库 url 的组件。 Heroku 强烈建议不要这样做,因为在发生灾难时他们可能需要将数据库移动到新主机。 当您在应用程序上创建数据库时, DATABASE_URL由 Heroku 设置,它是您可以依赖的一个配置变量来保持最新状态。 继续...

您需要从DATABASE_URL配置变量中解析用户名、密码、主机、端口和数据库名称,并将它们提供给settings块的属性。 根据您提供的错误,我可以告诉您目前没有这样做,因为 Heroku 数据库用户名都以 'u' 开头,所以如果您收到错误user "ssqqeaz***" ,那就是非常错误的。 作为第一步,您可能会尝试在设置块中对这些值进行硬编码以确保其正常工作(确保在执行此操作后轮换凭证,或者清理您的 git 历史记录以防止泄露凭证)。 postgres 连接 url 的模式是这样的: postgres:// $USERNAME: $PASSWORD @ $HOSTNAME: $PORT / $DATABASE_NAME

不确定它是否有助于移动您的配置...

  • 从选项键中删除 ssl

  • 在设置键中的密码后插入 ssl 例如。

    ssl: env.bool('DATABASE_SSL', false),

还要检查 Heroku 内的应用程序配置变量,并确保您具有所需的 postgres 配置变量设置,并且它们与 heroku 生成的 DATABASE_URL 配置变量匹配。 最后检查你的 ./config/server.js 文件并确保你的主机是 0.0.0.0

例如。

module.exports = ({ env }) => ({
  host: env('HOST', '0.0.0.0'),
  port: env.int('PORT', 1337),
  admin: {
    auth: {
      secret: env('ADMIN_JWT_SECRET', '**********************************'),
    },
  },
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM