Не могу подключиться к Postgres БД с помощью Strapi на Heroku - PullRequest
0 голосов
/ 28 мая 2020

Попытка развернуть Strapi на Heroku с Postgres, как описано здесь

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
      },
    },
  },
});

Почему? Пожалуйста, помогите!

Ответы [ 3 ]

0 голосов
/ 30 мая 2020

Текущая конфигурация, которую вы опубликовали, не будет работать с базой данных Heroku Postgres. Основная проблема здесь заключается в том, что вы читаете компоненты URL-адреса своей базы данных postgres из вручную установленных переменных конфигурации. Heroku настоятельно не рекомендует этого делать, потому что в случае сбоя им может потребоваться переместить базу данных на новый хост. DATABASE_URL устанавливается Heroku, когда вы создаете базу данных в приложении, и это единственная конфигурационная переменная, на которую вы можете положиться, чтобы оставаться в актуальном состоянии. Продолжаем ...

Вам нужно будет проанализировать имя пользователя, пароль, хост, порт и имя базы данных из DATABASE_URL config var и передать их в атрибуты блока settings. Основываясь на предоставленной вами ошибке, я могу сказать, что вы в настоящее время этого не делаете, потому что все имена пользователей базы данных Heroku начинаются с 'u', поэтому что-то очень не так, если вы получаете ошибку user "ssqqeaz***". В качестве первого шага вы можете попробовать жестко закодировать эти значения в блоке настроек, чтобы убедиться, что он работает (не забудьте повернуть учетные данные после того, как вы это сделаете, или иным образом очистите историю git, чтобы предотвратить утечку кредитов). Шаблон для URL-адреса подключения postgres выглядит примерно так: postgres:// $USERNAME : $PASSWORD @ $HOSTNAME : $PORT / $DATABASE_NAME.

0 голосов
/ 21 августа 2020

Не уверен, поможет ли это переместить вашу конфигурацию ...

  • удалить ssl из опции Key

  • вставить 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', '**********************************'),
    },
  },
});
0 голосов
/ 29 мая 2020

попробуйте заменить ssl : true на ssl : false

...