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.

23
demandé sur j0ntech 2012-04-23 15:49:23

5 réponses

Je suis tombé là-dessus moi-même, c'est une solution simple. Connectez - vous sur HTTPS à la place

3
répondu Jeff Dickey 2012-05-09 22:53:30

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
36
répondu jede 2015-07-27 17:34:23

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).

27
répondu matt 2012-06-28 20:45:17

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'
});
17
répondu adrichman 2015-07-27 17:31:36

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();
7
répondu Avinash 2014-01-09 09:26:43