簡體   English   中英

nodejs應用程序 - mongodb連接失敗,錯誤“ECONNREFUSED”

[英]nodejs application - mongodb connection fails with error “ECONNREFUSED”

背景資料

我正在玩我的第一個試圖連接到遠程mongodb的nodejs測試應用程序。

問題:

連接失敗,並顯示以下消息:

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”然后使用“use test”/“use admin”命令切換進出測試數據庫,確保我有一個名為“test”的數據庫。

  3. 我不相信我已經啟用了授權。 這是我在mongo.conf文件中的內容:

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

為了證明這一點,為了通過命令行進入服務器上的測試數據庫,我只需輸入“mongo”,然后默認情況下,我在測試數據庫中。 所以我想我可以放心地假設我沒有進行任何身份驗證。

  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
    管理員@ mongotest:〜$

我正在閱讀手冊,看​​看還有什么我應該檢查的。 我也正在閱讀各種類似的stackoverflow帖子,但我還沒有找到答案。

有什么建議?

我可以在你的日志中看到Mongo正在收聽127.0.0.1。 這可能是你的問題。 您必須更改bind-ip地址配置設置以允許Mongo偵聽特定或所有IP地址。 你可以在這里找到如何做到這一點: 無法使用機器ip連接到mongodb

打開一個終端。

輸入mongod &並檢查堆棧跟蹤。

這是一個失敗的開始的例子

I STORAGE [initandlisten] exception in initAndListen: 29 Data directory /data/db not found., terminating I NETWORK [initandlisten] shutdown: going to close listening sockets... I NETWORK [initandlisten] shutdown: going to flush diaglog... I CONTROL [initandlisten] now exiting

要解決此問題,請創建文件夾/ data / db

在終端中,鍵入mkdir /data/db

再次鍵入mongod

有用 !!

[initandlisten] ** WARNING: Access control is not enabled for the database. I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. I CONTROL [initandlisten] I CONTROL [initandlisten] I CONTROL [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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