连接拒绝 MongoDB errno 111

问题描述 投票:0回答:13

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

我已将这两条规则添加到我的 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 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

非常感谢任何帮助!!!!谢谢!!!

linux mongodb firewall iptables
13个回答
140
投票

谢谢大家的帮助!

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

但是,如果不是因为冲突,aka 的一条评论和 manu2013 的另一条评论都是我会遇到的问题。

那么!请务必记住编辑

/etc/mongod.conf
文件并设置您的
bind_ip = 0.0.0.0
以便建立外部连接。

此外,请确保您的 iptable 中没有与 mongo 所需端口相冲突的规则(请参阅 mongodb 站点上的链接以正确设置您的 iptables)。


52
投票

尝试以下操作:

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

48
投票

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

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

如果您使用代理,请使用:-
导出http_proxy =“http://用户名:[电子邮件受保护]:端口/”
导出 https_proxy="http://用户名:[电子邮件受保护]:端口/"

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


17
投票

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

sudo apt-get install --reinstall mongodb

8
投票

我没有

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


7
投票

对我来说,将 /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

3
投票

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

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

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


2
投票

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


1
投票

就我而言,之前的版本是 3.2。我已升级到 3.6,但数据文件与新版本不兼容,因此我删除了所有数据文件,因为它对我及其工作不可用。

您可以使用

/var/log/mongodb

检查日志

1
投票

我按照本教程的说明进行安装

如何在Ubuntu 16.04上安装MongoDB

我也犯过同样的错误。最后我发现需要设置端口号

mongo命令的默认端口号是27017

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


1
投票

这对我来说很有效

sudo service mongod restart

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

0
投票

我将bindIp:127.0.0.1更改为bindIp:0.0.0.0,之后我还重新启动了mongoDB服务器,但我仍然无法解决它总是说的问题

错误:MongoDB ConnectionException:无法连接到本地主机:27017

  • 不支持的操作:套接字构造函数

如何清除这个错误并连接到本地mongodb

© www.soinside.com 2019 - 2024. All rights reserved.