连接被拒绝MongoDB errno 111

问题描述:

我有一个运行Ubuntu 12.04 LTS和MongoDB实例的Linode服务器(服务正在运行并且可以本地连接),我无法从外部源连接到该服务器。连接被拒绝MongoDB errno 111

我加入了这两个规则,我的IP表,其中< IP地址>是我想连接FROM(如本MongoDB reference概述)服务器:

iptables -A INPUT -s < ip-address > -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -d < ip-address > -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT

我看到我的IP表中的规则允许连接27017上和从< IP地址>然而,当我尝试从< IP地址>连接到我的mongo数据库使用像这样的命令:

mongo databasedomain/databasename -u username -p password

我得到这个错误:

2014-07-22T23:54:03.093+0000 warning: Failed to connect to databaseserverip:27017, reason: errno:111 Connection refused 2014-07-22T23:54:03.094+0000 Error: couldn't connect to server < ip address >:27017 (databaseserverip), connection attempt failed at src/mongo/shell/mongo.js:148 exception: connect failed

任何帮助是非常赞赏!!!!谢谢!!!

+0

你确定其他mongod正在运行吗?你可以在本地连接到它吗? – Sammaye

+0

mongod在本地运行,是的,我可以在本地连接。 – dbcooper

感谢您的帮助大家!

原来,这是一个iptable冲突。列出端口打开的两条规则(导致一个封闭的端口)。

但是,aka和manu2013的另一个评论是我遇到的问题,如果不是冲突的话。

所以!请始终记住编辑/etc/mongod.conf文件并设置您的bind_ip = 0.0.0.0以便进行外部连接。

此外,请确保您的iptable中没有mongo端口需要的冲突规则(请参阅link on mongodb's site以正确设置您的iptables)。其他

+6

它的工作,你也可以注释掉bind_ip –

+1

或者只是在连接字符串中使用127.0.0.1,而不是本地主机,并在内部连接... –

+4

不要忘记让'sudo服务mongod restart' – mqklin

尝试以下操作:

sudo rm /var/lib/mongodb/mongod.lock 
sudo service mongodb restart 
+1

没有运气。仍然收到连接失败。谢谢你的尝试。 – dbcooper

+1

您的MongoD服务器是否绑定在所有接口上侦听? 2.6.x默认设置为仅在本地主机上侦听。您可以通过“netstat -an | grep 27017”来确认它,并且它应该显示mongod绑定的所有IP地址。 – aks

+1

确保在配置文件mongodb.conf中,bindIp设置(早期版本的bind_ip)设置为通过分配值0.0.0.0来侦听所有接口。默认情况下,它只监听本地主机,因为它的默认值是127.0.0.1。 – manu2013

一种选择是只修复数据库,像这样(注:应预先创建的第一DB0目录):

mongod --dbpath /var/lib/mongodb/ --repairpath /var/lib/mongodb/db0 

这也是在生产环境可以接受的办法......

这些命令固定我的问题,

sudo rm /var/lib/mongodb/mongod.lock 
sudo mongod --repair 
sudo service mongod start 
sudo service mongod status 

如果你是落后的代理,用途: -
出口HTTP_PROXY =“HTTP: //username:[email protected]:port/”
出口https_proxy = “HTTP://用户名:[email protected]:端口/”

参考:https://*.com/a/24410282/4359237

+0

如果我运行这个命令,它是否删除我存储在数据库中的数据 – devend

+0

@devend它不应该作为修复命令在所有数据库上运行repairDatabase命令。 repairDatabase:检查并修复数据存储中的错误和不一致性。 repairDatabase类似于文件系统的fsck命令。 [参考](https://docs.mongodb.com/v3.0/reference/command/repairDatabase/#repairdatabase) – sk1pro99

对于Ubuntu服务器15.04和16。04您只需执行此命令

sudo apt-get install --reinstall mongodb 
+0

它的工作。谢谢。 –

我没有/data/db目录。我创建了一个,并给了一个chmod 777权限,它为我工作

我也有同样的问题。在dbpath中创建一个目录。在我的情况下,没有在/ data/db中的目录。所以我创建了一个。现在它的工作。确保给该目录许可。