连接拒绝MongoDB错误111

时间:2014-07-23 00:12:19

标签: linux mongodb firewall iptables

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

我已将这两个规则添加到我的IP表中,其中< ip address>是我想要连接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上的连接和来自&lt; ip address&gt;但是,当我尝试连接时,&lt; ip address&gt;使用如下命令到我的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

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

12 个答案:

答案 0 :(得分:110)

感谢大家的帮助!

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

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

原来如此!始终记住要编辑/etc/mongod.conf文件并设置bind_ip = 0.0.0.0以便在外部建立连接。

另外,请确保您的iptable中没有针对mongo所需端口的规则存在冲突规则(请参阅link on mongodb's site正确设置您的iptables)。

答案 1 :(得分:41)

尝试以下方法:

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

答案 2 :(得分:38)

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

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

如果您支持代理,请使用: -
export http_proxy =&#34; http:// username:password@company.com:port /&#34;
export https_proxy =&#34; http:// username:password@company.com:port /&#34;

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

答案 3 :(得分:16)

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

sudo apt-get install --reinstall mongodb

答案 4 :(得分:7)

我没有/data/db目录。我创建了一个并获得了chmod 777权限,它对我有用

答案 5 :(得分:3)

另一个选择就是像这样修复你的数据库(注意:首先应该预先创建db0目录):

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

这在生产环境中也是可接受的选项......

答案 6 :(得分:2)

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

答案 7 :(得分:2)

对我来说,将/ var / lib / mongodb和/tmp/mongodb-27017.sock的所有权更改为mongodb才是可行的方法。

只需:

sudo chown -R mongodb:mongodb /var/lib/mongodb

然后:

sudo chown mongodb:mongodb /tmp/mongodb-27017.sock

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

sudo systemctl start mongod

sudo systemctl restart mongod

并检查状态

sudo systemctl status mongod

答案 8 :(得分:1)

在我的情况下,以前的版本是3.2。我已经升级到3.6但是数据文件与新版本不兼容所以我删除了所有数据文件,因为它不适用于我及其工作。

您可以使用/var/log/mongodb

查看日志

答案 9 :(得分:1)

我按照本教程的安装说明

How to Install MongoDB on Ubuntu 16.04

我有同样的错误。最后,我发现需要设置端口号

mongo命令的默认端口号是27017

但是mongo.conf中的默认端口号是29999

答案 10 :(得分:1)

这帮了我大忙

sudo service mongod restart

答案 11 :(得分:0)

即使端口已打开,MongoDB当前也仅侦听本地地址127.0.0.1。要允许远程连接,请将服务器的公共可路由IP地址添加到 mongod.conf 文件中。

在编辑器中打开MongoDB配置文件:

sudo nano /etc/mongodb.conf

将服务器的IP地址添加到bindIP值:

...
logappend=true

bind_ip = 127.0.0.1,your_server_ip
#port = 27017

...

请注意,现在每个拥有用户名和密码的人都可以登录到您的数据库,并且您希望通过仅限制特定IP的连接来避免这种情况。这可以使用防火墙来完成(有关Google的UFW服务的信息,请参阅)。简而言之,应该是这样的:

sudo ufw allow from YOUR_IP to any port 27017