连接拒绝MongoDB错误111

dbc*_*per 69 linux firewall iptables mongodb

我有一个Linode服务器运行Ubuntu 12.04 LTS和MongoDB实例(服务正在运行并且CAN本地连接),我无法从外部源连接.

我已将这两个规则添加到我的IP表中,其中<ip address>是我想要连接FROM的服务器(如本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 address>之间的连接,但是当我尝试使用如下命令从<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

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

dbc*_*per 112

感谢大家的帮助!

原来这是一场iptable冲突.列出端口打开的两条规则(导致关闭端口).

然而,manu2013的aka和另一个评论之一是我遇到的问题,如果不是冲突的话.

所以!始终记得编辑/etc/mongod.conf文件并设置您的bind_ip = 0.0.0.0外部连接.

另外,请确保您的iptable中没有针对mongo所需端口的冲突规则(请参阅mongodb网站上的链接以正确设置您的iptables).

  • 生产中不要做`bind_ip = 0.0.0.0` !!!! 或者您将公开展示您的服务器...... (8认同)
  • 它工作,你也可以注释掉bind_ip (6认同)
  • 别忘了制作`sudo service mongod restart` (6认同)

man*_*013 43

请尝试以下方法:

sudo rm /var/lib/mongodb/mongod.lock
sudo service mongodb restart
Run Code Online (Sandbox Code Playgroud)

  • 您的MongoD服务器是否绑定了所有接口?默认情况下,2.6.x设置为仅在localhost上侦听.您可以通过"netstat -an | grep 27017"进行确认,它应该显示mongod绑定的所有IP地址. (3认同)
  • 没运气.仍然连接失败.谢谢你的尝试. (2认同)
  • 确保在配置文件mongodb.conf中,将bindIp设置(早期版本的bind_ip)设置为通过分配值0.0.0.0来侦听所有接口.默认情况下,它仅侦听localhost,因为其默认值为127.0.0.1. (2认同)

sk1*_*o99 40

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

sudo rm /var/lib/mongodb/mongod.lock
sudo mongod --repair
sudo service mongod start
sudo service mongod status
Run Code Online (Sandbox Code Playgroud)

如果您落后于代理,请使用: -
export http_proxy ="http:// username:password@company.com:port /"
export https_proxy ="http:// username:password@company.com:port /"

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


小智 16

对于Ubuntu Server 15.04和16.04,您只需要执行此命令

sudo apt-get install --reinstall mongodb
Run Code Online (Sandbox Code Playgroud)


小智 7

我没有/data/db目录.我创建了一个并给了chmod 777许可,它对我有用


小智 6

对我来说,将 /var/lib/mongodb 和 /tmp/mongodb-27017.sock 的所有权更改为 mongodb 是要走的路。

做就是了:

sudo chown -R mongodb:mongodb /var/lib/mongodb
Run Code Online (Sandbox Code Playgroud)

进而:

sudo chown mongodb:mongodb /tmp/mongodb-27017.sock
Run Code Online (Sandbox Code Playgroud)

然后启动或重启 mongodb 服务器:

sudo systemctl start mongod
Run Code Online (Sandbox Code Playgroud)

或者

sudo systemctl restart mongod
Run Code Online (Sandbox Code Playgroud)

并检查状态

sudo systemctl status mongod
Run Code Online (Sandbox Code Playgroud)