Подтвердить что ты не робот

Ошибка аутентификации при подключении к базе данных Heroku PostgreSQL

Я разрабатываю приложение Node.js, используя PostgreSQL и хостинг на Heroku. Моя проблема в том, что я получаю ошибку аутентификации, например:

14:32:05 web.1     | { [error: no pg_hba.conf entry for host "193.40.244.196", user "username", database "database_name", SSL off]
14:32:05 web.1     |   length: 168,
14:32:05 web.1     |   name: 'error',
14:32:05 web.1     |   severity: 'FATAL',
14:32:05 web.1     |   code: '28000',
14:32:05 web.1     |   detail: undefined,
14:32:05 web.1     |   hint: undefined,
14:32:05 web.1     |   position: undefined,
14:32:05 web.1     |   internalPosition: undefined,
14:32:05 web.1     |   internalQuery: undefined,
14:32:05 web.1     |   where: undefined,
14:32:05 web.1     |   file: 'auth.c',
14:32:05 web.1     |   line: '483',
14:32:05 web.1     |   routine: 'ClientAuthentication' }

Это может быть проблема SSL, но здесь не должно упоминаться здесь. SSL следует поддерживать из коробки. Итак, я в тупике и могу только спросить, что может вызвать эту ошибку?

Я не уверен, что мне нужно изменить pg_hba.conf в моей системе, но я даже не могу его найти.

4b9b3361

Ответ 1

Изначально в это, это простое исправление. Просто подключитесь к HTTPS вместо

Ответ 3

node -postgres не поддерживает SSL в нем привязки javascript, которые вы используете, если вы делаете:

var pg = require('pg');

Чтобы получить SSL, вам нужно использовать встроенное связывание, выполнив следующее:

var pg = require('pg').native;

Вам не нужно использовать SSL, когда ваше приложение работает в Heroku, вам нужно использовать только SSL для удаленного подключения (когда приложение работает локально).

Ответ 4

Я добавил эти параметры и теперь могу подключиться к экземпляру postgres heroku с внешнего сервера, в частности, в конфигурации knex.js на node экспресс-сервере:

var knex = require('knex')({
  client: 'postgres',
  connection: 'postgres://username:[email protected]:5432/yourdbname?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory'
});

Ответ 5

В один и тот же вопрос. Just Enabled ssl = true в параметрах db.

var pg = require('pg');
var params = { host: 'heroku_hostname',user: 'username',password: 'password',database: 'database',ssl: true };
var client = new pg.Client(params);
client.connect();