Erreur d'authentification lors de la connexion à la base de données Heroku PostgreSQL
je développe un noeud.application js utilisant PostgreSQL et hébergement sur Heroku. Mon problème est que j'obtiens une erreur d'authentification comme suit:
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' }
C'est peut-être un SSL problème, mais il ne devrait pas être comme mentionné ici. SSL doit être pris en charge hors de la boîte. Donc je suis perplexe et ne peux que demander ce qui pourrait causer cette erreur?
Je ne suis pas sûr si je dois peut-être éditer le pg_hba.conf sur mon système, mais je ne peux même pas le trouver.
5 réponses
Je suis tombé là-dessus moi-même, c'est une solution simple. Connectez - vous sur HTTPS à la place
Résolu en positionnant PGSSLMODE
(http://www.postgresql.org/docs/9.0/static/libpq-envars.html) sur Heroku. Il indique à PostgreSQL D'utiliser par défaut SSL.
$ heroku config:set PGSSLMODE=require
node-postgres ne supporte pas SSL dans ses fixations javascript, que vous utilisez si vous le faites:
var pg = require('pg');
pour obtenir SSL, vous devez utiliser la reliure native en faisant ceci:
var pg = require('pg').native;
Vous ne pas besoin d'utiliser SSL lorsque votre application tourne à L'intérieur D'Heroku, vous n'avez besoin d'utiliser SSL pour vous connecter à distance (lorsque votre application tourne localement).
j'ai ajouté ces paramètres et je peux maintenant me connecter à mon instance heroku postgres à partir d'un serveur externe, spécifiquement, en configuration de knex.js dans un nœud express server:
var knex = require('knex')({
client: 'postgres',
connection: 'postgres://username:password@host:5432/yourdbname?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory'
});
a Couru dans la même question. Vient D'activer ssl = true dans les paramètres 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();