Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Node.js, PostgreSQL error: no pg_hba.conf entry for host

I am following this article ((http://nodeexamples.com/2012/09/21/connecting-to-a-postgresql-database-from-node-js-using-the-pg-module/). I have already deployed my app to heroku and currently using express, node.js, to try and connect to a PostgresSQL database in Heroku that I just installed. I get to the very end of the article and I use the command

node myfile.js 

I get this error

error: no pg_hba.conf entry for host "...", user "...", database "...", ...  

How do I go about creating one and where in my app directory should I put it?

Below is the entire error message. I changed the strings for IP address, user, and database but it looks basically just like it.

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: I did some more research and found that the 'pg_hba.conf' file is in my

/usr/local/var/postgres  

and I added this line into the 'pg_hba.conf' file

# TYPE  DATABASE        USER            ADDRESS                 METHOD  host   all             all                                     trust 

also tried

# TYPE  DATABASE        USER            ADDRESS                 METHOD host   all             all              0.0.0.0/0               md5 

but it keeps saying there is no entry for my host, user, database, etc... is my 'pg_hba.conf' syntax wrong in any way?

like image 518
stcho Avatar asked Jul 28 '14 16:07

stcho


2 Answers

Change your connection code to use ssl. Following your linked example:

var conString = "pg://admin:guest@localhost:5432/Employees"; var client = new pg.Client(conString); client.connect(); 

becomes:

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

like image 174
aembke Avatar answered Sep 23 '22 08:09

aembke


Running on heroku:

We ran into this error while upgrading the pg database on heroku from hobby tier to standard-0. SSL is required, but we didnt set it in our config.

Include in config when initialize new Sequelize(...)

"dialect": "postgres", "dialectOptions": {   "ssl": true } 

This trick was, that the ssl option is wrapped in dialectOptions. found here: https://github.com/sequelize/sequelize/issues/956#issuecomment-147745033

Info by @Atish: Use

options: {    dialect: "postgres",   native: true, # adding this maybe breaks on hobby dyno   ssl: true,    dialectOptions: {     ssl: true   } } 
like image 22
Simon Franzen Avatar answered Sep 21 '22 08:09

Simon Franzen