nodejs应用程序 – mongodb连接失败,错误“ECONNREFUSED”

背景信息

我正在玩我试图连接到远程MongoDB的第一个nodejstesting应用程序。

问题:

连接失败,出现以下消息:

admin@testdev:~/Documents/nodejs_tests$ sudo nodejs index.js Server has started. Request for / received About to route a request for: / inside db connect method Request for /favicon.ico received About to route a request for: /favicon.ico inside db connect method MongoError: connect ECONNREFUSED null MongoError: connect ECONNREFUSED null 

这是连接的逻辑:

 function connect_nimble() { console.log("inside db connect method"); MongoClient.connect("mongodb://10.1.1.1:27017/test", function(err,db) { console.log(err); console.log(db); if(!err) { console.log("booya! Connected to mongo"); return true; } }); } 

我到目前为止检查的是:

  1. 我已经确定数据库服务器正在使用端口27017.以下是我在重新启动数据库时在mongodb日志中看到的内容:

     admin@mongotest:~$ tail -f /var/log/mongodb/mongod.log 2015-07-21T09:52:41.452-0500 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 2015-07-21T09:52:41.452-0500 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2015-07-21T09:52:41.452-0500 I CONTROL [initandlisten] 2015-07-21T09:52:41.452-0500 I CONTROL [initandlisten] db version v3.0.4 2015-07-21T09:52:41.452-0500 I CONTROL [initandlisten] git version: 0481c958daeb2969800511e7475dc66986fa9ed5 2015-07-21T09:52:41.452-0500 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1f 6 Jan 2014 2015-07-21T09:52:41.452-0500 I CONTROL [initandlisten] build info: Linux ip-10-45-73-23 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49 2015-07-21T09:52:41.452-0500 I CONTROL [initandlisten] allocator: tcmalloc 2015-07-21T09:52:41.452-0500 I CONTROL [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1" }, storage: { dbPath: "/var/lib/mongodb" }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } } **2015-07-21T09:52:41.470-0500 I NETWORK [initandlisten] waiting for connections on port 27017** 
  2. 我通过启动“mongo”来确保我有一个名为“test”的数据库…然后使用“use test”/“use admin”命令切换进出testing数据库。

  3. 我不相信我有授权打开。 这是我在mongo.conf文件中的内容:

 # Turn on/off security. Off is currently the default #noauth = true #auth = true 

为了certificate这一点,为了通过命令行进入服务器上的testing数据库,我只需要键入“mongo”,然后默认情况下,我在testing数据库中。 所以我想我可以安全地假设我没有任何身份validation。

  1. 以防万一,我也检查了netstat的端口号:

    admin @ mongotest:〜$ sudo netstat -taupen | grep mongo tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 117 6465150 18792mongod
    pipe理员@ mongotest:〜$

我正在阅读手册,看​​看有什么我应该检查。 我也阅读了类似的各种计算器的post,但我还没有find答案。

有什么build议么?

我可以在日志中看到Mongo正在127.0.0.1上监听。 这可能是你的问题。 您必须更改绑定IP地址configuration设置,以允许Mongo侦听特定或所有IP地址。 你可以find如何做到这一点: 无法连接到使用机器ip的mongodb