[英]node-postgres get error connect ECONNREFUSED
我想使用node-posgres將我的應用程序nodejs連接到PostgreSQL。 我的應用程序在localhost(ubuntu)中,而我的postgresql在具有操作系統OpenSuse的雲中的虛擬機中。 這是我的代碼:
var express = require('express');
var app = express();
var http = require('http');
var pg = require('pg');
var conString = "postgres://postgres:mypassword@myurl.com:5432/postgres";
app.get('/', function (req, res) {
res.send('HOLAAAA');
});
// respond with "SERVER" on the homepage
app.get('/server', function (req, res) {
var client = new pg.Client(conString);
client.connect(function (err) {
if (err) {
return console.error('could not connect to postgres', err);
}
console.log('CONNECT PASSED');
client.query('SELECT * FROM visit', function (err, result) {
if (err) {
return console.error('error running query', err);
}
console.log('QUERY PASSED');
console.log(result.rows[0].theTime);
//output: Tue Jan 15 2013 19:12:47 GMT-600 (CST)
client.end();
});
});
});
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
但我有這樣的錯誤:
could not connect to postgres { [Error: connect ECONNREFUSED]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect' }
請幫我解決這個問題。 謝謝!
@Madhavan Kumar非常感謝您的幫助
解決此問題的步驟如下:
在遠程服務器上:
1- find \\ -name "postgresql.conf"
來找到配置文件的位置
2- sudo nano /path/to/config/postgresql.conf
編輯配置文件
3-將此#listen_addresses = 'localhost'
更改為此listen_addresses = '*'
然后保存並退出
4- find \\ -name "pg_hba.conf"
來找到hba配置文件
5- sudo nano /path/to/config/pg_hba.conf
編輯hba配置文件
6- host all all 0.0.0.0/0 md5 host all all ::/0 md5
添加host all all 0.0.0.0/0 md5 host all all ::/0 md5
在文件末尾,然后保存並退出
7-運行/etc/init.d/postgresql restart
以重新啟動postgres
在代碼中這樣連接:
let sequelize = new Sequelize(
config.db.name,
config.db.username,
config.db.password,
{
host: config.ip,
port: config.port,
dialect : 'postgres'
}
)
首先從本地嘗試一個簡單的psql命令,
psql -d DBNAME -h YOUR_IP -U USERNAME
它可能對您不起作用。 這可能是由於兩個原因,您的本地工作站無法解析VM的IP。 (或)是像亞馬遜(或)您的桌面一樣的公共雲中的VM。 如果在公共組中,則VM上的端口5432不對公共世界開放。 您需要編寫一個安全組來執行此操作。
如果您確定不是上述兩個問題中的任何一個,最好訪問postgres /etc/postgresql/9.3/main/pg_hba.conf
並查看是否啟用了遠程連接。 NodeJs應用程序,您必須在最后進行測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.