Узел.JS, PostgreSQL ошибка: нет pg hba.запись conf для хозяина
Я следую этой статье ((http://nodeexamples.com/2012/09/21/connecting-to-a-postgresql-database-from-node-js-using-the-pg-module/) - ... Я уже развернул свое приложение в heroku и в настоящее время использую express, node.js, чтобы попытаться подключиться к базе данных PostgresSQL в Heroku, которую я только что установил. Я добираюсь до самого конца статьи, и я использую команду
node myfile.js
Я получаю эту ошибку
error: no pg_hba.conf entry for host "...", user "...", database "...", ...
как я могу создать один и где в мой каталог приложений должен ли я его поместить?
ниже-это все сообщение об ошибке. Я изменил строки для IP-адреса, пользователя и базы данных, но это выглядит в основном так же.
events.js:72
throw er; // Unhandled 'error' event
^
error: no pg_hba.conf entry for host "00.000.000.00", user "username", database "databasename", SSL off
at Connection.parseE (/Users/user/workspace/MyApp/app/node_modules/pg/lib/connection.js:526:11)
at Connection.parseMessage (/Users/user/workspace/MyApp/app/node_modules/pg/lib/connection.js:356:17)
at Socket.<anonymous> (/Users/user/workspace/MyApp/app/node_modules/pg/lib/connection.js:105:22)
at Socket.emit (events.js:95:17)
at Socket.<anonymous> (_stream_readable.js:748:14)
at Socket.emit (events.js:92:17)
at emitReadable_ (_stream_readable.js:410:10)
at emitReadable (_stream_readable.js:406:5)
at readableAddChunk (_stream_readable.js:168:9)
at Socket.Readable.push (_stream_readable.js:130:10)
Edit: я сделал еще несколько исследований и обнаружил, что 'pg_hba.conf ' файл находится в моем
/usr/local/var/postgres
и я добавил эту строку в файле pg_hba.conf ' file
# TYPE DATABASE USER ADDRESS METHOD
host all all trust
тоже пробовал
# TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 md5
но он продолжает говорить, что нет записи для моего хоста, пользователя, базы данных и т. д... это мой файл pg_hba.синтаксис conf в любом случае неправильный?
5 ответов
измените код подключения для использования ssl. Следуя вашему связанному примеру:
var conString = "pg://admin:guest@localhost:5432/Employees";
var client = new pg.Client(conString);
client.connect();
будет:
var client = new pg.Client({
user: "admin",
password: "guest",
database: "Employees",
port: 5432,
host: "localhost",
ssl: true
});
client.connect();
https://github.com/brianc/node-postgres/wiki/Client#new-clientobject-config--client
в случае, если sequelize игнорирует все ваши усилия по включению ssl, вы можете попытаться убедить pg включить ssl для всех соединений по умолчанию:
var pg = require('pg');
pg.defaults.ssl = true;
const Sequelize = require('sequelize');
const sequelize = new Sequelize('postgres://...');
вы также можете использовать переменную конфигурации среды "PGSSLMODE" для "require" через веб-интерфейс Heroku или CLI.
Case: Postgres dB настроен как дополнение Heroku и прикреплен к приложению на Heroku Dyno.
Heroku предоставляет довольно хорошую поддержку о том, как подключиться к одной из своих дополнительных баз данных; однако, к сожалению, он оставляет (или, я пропустил его) любое упоминание о том, что делать для обеспечения SSL, так как все уровни БД Heroku, начиная со Standard-0, обеспечивает SSL по умолчанию.
мы столкнулись с этой ошибкой при обновлении базы данных pg на heroku от hobby
уровень standard-0
. SSL требуется, но мы не установили его в нашей конфигурации.
включить в config при инициализации new Sequelize(...)
"dialect": "postgres",
"dialectOptions": {
"ssl": true
}
этот трюк был, что опция ssl завернута в dialectOptions
.
найдено здесь:https://github.com/sequelize/sequelize/issues/956#issuecomment-147745033
просто добавьте флаг к инициализации клиента:
изменить
const conString = "pg://admin:guest@localhost:5432/Employees"
const client = new pg.Client(conString);
client.connect();
до
const conString = "pg://admin:guest@localhost:5432/Employees"
const client = new pg.Client({
connectionString: process.env.DATABASE_URL,
ssl: true
});
client.connect();