Внезапно учетные данные Heroku для сервера PostgreSQL дают FATAL пароль для ошибки пользователя - PullRequest
0 голосов
/ 16 июня 2020

Не меняя ничего в моих настройках, я не могу подключиться к моей базе данных PostgreSQL, размещенной на Heroku. Я не могу получить к нему доступ в своем приложении, и выдается ошибка

OperationalError: (psycopg2.OperationalError) FATAL:  password authentication failed for user "<heroku user>" FATAL:  no pg_hba.conf entry for host "<address>", user "<user>", database "<database>", SSL off

Он говорит, что SSL отключен, но он включен, как я подтвердил в PgAdmin. При попытке доступа к базе данных через PgAdmin 4 я получаю ту же проблему, говоря, что существует фатальная ошибка аутентификации пароля для пользователя.

Я проверил учетные данные для базы данных на Heroku, но ничего не изменилось . Я делаю что-то неправильно? Нужно ли мне что-то менять в pg_hba.conf?

Edit : в уведомлениях на Heroku я вижу, что база данных была обновлена ​​примерно в то время, когда база данных перестала у меня работать. Однако я не уверен, запустил ли я обновление.

Вот центр уведомлений:

Ответы [ 2 ]

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

У меня была такая же проблема. Спасибо @Chris, я решил это таким образом. Этот файл находится в config / database. js (Strapi 3.1.3)

var parseDbUrl = require("parse-database-url");

if (process.env.NODE_ENV === 'production') {
  module.exports = ({ env }) => {
    var dbConfig = parseDbUrl(env('DATABASE_URL', ''));
    return {
      defaultConnection: 'default',
      connections: {
        default: {
          connector: 'bookshelf',
          settings: {
            client: dbConfig.driver,
            host: dbConfig.host,
            port: dbConfig.port,
            database: dbConfig.database,
            username: dbConfig.user,
            password: dbConfig.password,
          },
          options: {
            ssl: false,
          },
        },
      },
    }
  };
} else {
  // to use the default local provider you can return an empty configuration
  module.exports = ({ env }) => ({
    defaultConnection: 'default',
    connections: {
      default: {
        connector: 'bookshelf',
        settings: {
          client: 'sqlite',
          filename: env('DATABASE_FILENAME', '.tmp/data.db'),
        },
        options: {
          useNullAsDefault: true,
        },
      },
    },
  });
}
0 голосов
/ 16 июня 2020

В общем, не рекомендуется жестко кодировать учетные данные при подключении к Heroku Postgres:

Не копируйте и не вставляйте учетные данные базы данных в отдельную среду или в код вашего приложения. URL-адрес базы данных управляется Heroku и может изменяться при некоторых обстоятельствах, например:

  • инициируемая пользователем ротация учетных данных базы данных с использованием heroku pg:credentials:rotate.
  • Catastrophi c аппаратных сбоев, требующих Персонал Heroku Postgres для восстановления вашей базы данных на новом оборудовании.
  • Проблемы безопасности или угрозы, требующие от сотрудников Heroku Postgres ротации учетных данных базы данных.
  • События автоматического переключения при отказе на HA * Планы с поддержкой 1017 *.

Рекомендуется всегда получать переменную конфигурации URL-адреса базы данных из соответствующего приложения Heroku при запуске приложения. Например, вы можете следовать 12Factor принципам конфигурации приложения , используя Heroku CLI и вызывать свой процесс следующим образом:

DATABASE_URL=$(heroku config:get DATABASE_URL -a your-app) your_process

Таким образом, вы гарантируете, что ваш процесс или приложение всегда имеет правильные учетные данные для базы данных.

Судя по сообщениям на вашем снимке экрана, я подозреваю, что вы пострадали от второй пули. Какой бы ни была причина, в одном из этих сообщений явно указано

После завершения URL-адрес вашей базы данных будет изменен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...