2015-07-21 61 views
11

背景信息應用的NodeJS - MongoDB的連接失敗,錯誤「ECONNREFUSED」

我玩弄我的第一個測試的NodeJS應用程序,試圖連接到遠程的mongodb。

問題:

的連接通過以下消息失敗:

[email protected]:~/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的日誌中看到,當我重新啓動數據庫:

    [email protected]:~$ 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」來調用所謂的「測試」,然後使用「use test」/「use admin」命令切換進出測試數據庫。

  3. 我不相信我打開了授權。這是我在mongo.conf文件:

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

而要證明這一點,才能進入通過命令行的服務器上的測試數據庫,我只需要鍵入「mongo」,然後默認情況下,我在測試數據庫中。所以我認爲我可以安全地假設我沒有任何身份驗證。

  • 以防萬一,我還檢查了netstat的端口號:

    管理員@ mongotest:〜$ sudo的netstat的-taupen | grep的蒙戈 TCP 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 117 6465150 18792mongod
    管理員@ mongotest:〜$

  • 我目前正在讀手冊,看​​看是否有什麼我需要正在檢查。我也通過類似的各種stackoverflow帖子閱讀,但我還沒有找到我的答案。

    有什麼建議嗎?

    +0

    您的netstat輸出清楚地顯示mongod正在僅偵聽127.0.0.1接口。您需要將連接字符串更改爲mongodb://127.0.0.1:27017/test。 – sabertiger

    +0

    看到我的回答:http:// stackoverflow。com/a/37994794/3166417 – itzhar

    回答

    4

    我可以在日誌中看到Mongo正在127.0.0.1上偵聽。這可能是你的問題。您將必須更改綁定IP地址配置設置,以允許Mongo偵聽特定或所有IP地址。您可以在此處找到如何執行此操作:Cannot connect to mongodb using machine ip

    +0

    或者,正如其中一條意見所示,如果您的Node服務與Mongo運行在同一臺計算機上,請將您的連接字符串更改爲localhost:mongodb://127.0.0.1:27017/test – tier1

    相關問題