簡體   English   中英

node-postgres獲取錯誤連接ECONNREFUSED

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM