连接拒绝MongoDB errno 111

我有一个Linode服务器运行Ubuntu 12.04 LTS和MongoDB实例(服务正在运行,可以在本地连接),我无法连接到外部来源。

我已经将这两个规则添加到我的IP表中,其中<ip address>是我想要连接的服务器(如在此MongoDB参考中所述 ):

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地址>,但是当我尝试从<ip address>连接到我的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

任何帮助是非常令人高兴的! 谢谢!!!

感谢大家的帮助!

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

然而,manu2013的另外一个意见是我遇到的问题,即使不是冲突。

所以! 一定要记得编辑/etc/mongod.conf文件,并设置你的bind_ip = 0.0.0.0以build立外部连接。

另外,确保你的iptable中没有mongo端口的冲突规则(参见mongodb网站上的链接来正确设置你的iptables)。

尝试以下操作:

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

这些命令为我解决了这个问题,

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

如果您在代理后面,请使用: –
export http_proxy =“http:// username:password@company.com:port /”
导出https_proxy =“http://用户名:password@company.com:port /”

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

对于Ubuntu Server 15.04和16.04,只需要执行这个命令

 sudo apt-get install --reinstall mongodb 

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

另一个select是像这样修复你的数据库(注意:db0目录应该是预先创build的):

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

这在生产环境中也是一个可接受的选项。