【问题标题】:nodejs application - mongodb connection fails with error "ECONNREFUSED"nodejs 应用程序 - mongodb 连接失败并出现错误“ECONNREFUSED”
【发布时间】:2015-07-21 15:11:03
【问题描述】:

背景信息

我正在尝试连接到远程 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”确保我有一个名为“test”的数据库...然后使用“use test”/“use admin”命令切换进出测试数据库。

  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 蒙戈 tcp 0 0 127.0.0.1:27017 0.0.0.0:* 听 117 6465150 18792mongod
    admin@mongotest:~$

我目前正在阅读手册,看​​看是否还有其他需要检查的地方。我也在阅读各种类似的 stackoverflow 帖子,但我还没有找到答案。

有什么建议吗?

【问题讨论】:

  • 您的 netstat 输出清楚地显示 mongod 仅在 127.0.0.1 接口上侦听。您需要将连接字符串更改为 mongodb://127.0.0.1:27017/test。

标签: node.js mongodb ubuntu-14.04


【解决方案1】:

我可以在您的日志中看到 Mongo 正在监听 127.0.0.1。这很可能是你的问题。您必须更改 bind-ip 地址配置设置以允许 Mongo 侦听特定或所有 IP 地址。你可以在这里找到如何做到这一点:Cannot connect to mongodb using machine ip

【讨论】:

  • 或者,正如其中一位 cmets 所建议的,如果您的 Node 服务与 Mongo 在同一台机器上运行,请将您的连接字符串更改为 localhost:mongodb://127.0.0.1:27017/test跨度>
【解决方案2】:

打开一个终端。

输入 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

【讨论】:

    猜你喜欢
    • 2019-06-12
    • 2011-07-13
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    相关资源
    最近更新 更多