背景资料
我正在尝试连接到远程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;
}
});
}
到目前为止我检查过的内容:
我确保数据库服务器正在使用端口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**
我确定我有一个名为" test"通过启动" mongo" ...然后使用"使用测试"来切换测试数据库。 /"使用admin"命令。
我不相信我已启用授权。这就是我在mongo.conf文件中的内容:
# Turn on/off security. Off is currently the default #noauth = true #auth = true
为了证明这一点,为了通过命令行进入服务器上的测试数据库,我只需输入" mongo"然后默认情况下,我在测试数据库中。所以我想我可以放心地假设我没有进行任何身份验证。
以防万一,我还检查了netstat的端口号:
admin @ mongotest:〜$ sudo netstat -taupen | grep mongo
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 117 6465150 18792mongod
admin @ mongotest:〜$
我目前正在阅读手册,看看是否还有其他我应该检查的内容。我也在阅读各种类似的stackoverflow帖子,但我还没找到答案。
有什么建议吗?
答案 0 :(得分:5)
我可以在你的日志中看到Mongo正在收听127.0.0.1。这可能是你的问题。您必须更改bind-ip地址配置设置以允许Mongo侦听特定或所有IP地址。您可以在此处找到如何执行此操作:Cannot connect to mongodb using machine ip
答案 1 :(得分:0)
打开一个终端。
键入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
并检查堆栈跟踪。
这是启动失败的示例
mkdir /data/db
要解决此问题,请创建文件夹/ 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
有效!!
m