我有一台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
任何帮助都非常赞赏!!!!感谢!!!
答案 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;
答案 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