我刚刚安装了MongoDB(标准的Ubuntu版本,而不是最新的版本),由于某些原因我无法连接:
Mon Feb 6 03:11:22 Error: couldn't connect to server 127.0.0.1 shell/mongo.js:79
exception: connect failed
现在我的机器不是127.xx1它出于某种原因xxx2(但是我已经改变了我的配置以绑定到该地址,并且还尝试绑定到我的公共IP,但没有用。
配置:
#mongodb.conf
# Where to store the data.
# Note: if you run mongodb as a non-root user (recommended) you may
# need to create and set permissions for this directory manually,
# e.g., if the parent directory isn't mutable by the mongodb user.
dbpath=/var/lib/mongodb
#where to log
logpath=/var/log/mongodb/mongodb.log
logappend=true
bind_ip = 199.21.114.XX
port = 27017
我检查了日志,只显示启动信息。
我还检查过deamon也在运行,它是 - 我甚至尝试使用--fork
手动运行它。
有没有人遇到过这个?还是有什么建议吗?
THX
更新:
重启后 - 这是日志:
** WARNING: You are running in OpenVZ. This is known to be broken!!!
Tue Feb 7 19:43:32 [initandlisten] db version v1.8.2, pdfile version 4.5
Tue Feb 7 19:43:32 [initandlisten] git version: nogitversion
Tue Feb 7 19:43:32 [initandlisten] build sys info: Linux allspice 2.6.24-28-se$
Tue Feb 7 19:43:32 [initandlisten] *** warning: spider monkey build without ut$
Tue Feb 7 19:43:32 [initandlisten] waiting for connections on port 27017
Tue Feb 7 19:43:32 [websvr] web admin interface listening on port 28017
答案 0 :(得分:25)
我通过在/etc/mongod.conf
文件中注释掉以下行来解决了这个问题。
# Listen to local interface only. Comment out to listen on all interfaces.
#bind_ip = 127.0.0.1
您需要在重新启动mongod进程时遵循此配置更改。
sudo service mongod restart
答案 1 :(得分:14)
您必须通过运行mongo 199.21.114.XX
来指定IP(199.21.114.XX)。
否则,如果您希望它也在localhost上侦听,则应删除配置文件中的bind_ip
设置。
更新检查防火墙配置。由于您连接到外部IP,因此可以将其配置为阻止,甚至可以从本地框中进行阻止。
答案 2 :(得分:10)
sudo rm /var/lib/mongodb/mongod.lock
答案 3 :(得分:3)
我有同样的问题只是因为这个愚蠢的错误。
首先删除mongodb文件,这很好
rm -rf /tmp/mongodb-27017.sock
我在/etc/mongod.conf
中错了# network interfaces
net:
port: 27017
#bindIp: 127.0.0.1
bindIp: privateIp
而不是
net:
port: 27017
bindIp: 10.1.2.4
用于收听所有可用的ips
bindIp: [127.0.0.1,10.128.0.2]
重启mongodb
sudo service mongod start
希望这个回答有助于某人
答案 4 :(得分:2)
默认情况下,运行mongo
控制台命令将在localhost上查找mongodb,因此127.0.0.1
IP是您的本地环回。此外,mongod
的默认配置应该在localhost上可用。除非你打开auth,否则现在开始这样做会更好。确保您已启用auth或您的数据库在公共IP上公开运行。
如果要连接到localhost或默认配置以外的主机,请执行以下操作:
mongo <host>
答案 5 :(得分:1)
以下步骤可以帮助您:
5最后只是调用命令“ mongo ”
答案 6 :(得分:1)
在/etc/mongod.conf
中我改变了,
bindIp: 127.0.0.1
到
bindIp: 0.0.0.0
是所有端口。是的,我知道这很冒险,但是我正在内部网络上运行。
BTW注释掉#bindIp: 127.0.0.1
对我不起作用,在Ubuntu 18下运行。
答案 7 :(得分:1)
当 mongod
正在运行但尚未“正常”运行时,我遇到了这个问题。我猜可能有更好的方法可以在安装后等待它出现,但添加 sleep 10
似乎可以解决它。
稍微不那么粗鲁的方法可能是tail -f
它的日志文件并查找它告诉您它正在侦听您指定的接口的事件。
local log=/var/log/mongodb/mongod.log
sudo -u mongodb touch "$log"
service mongod start &
launcher=$!
tail -0f "$log" |
grep -q 'port: 27017'
wait "$launcher"
sleep 1
最后的sleep
有点绝望;在它记录启动之后,它似乎需要一点时间,直到它正确启动和监听。
另见Bash shell script not getting connect to MongoDB even if status is active
答案 8 :(得分:0)
另一种方法是添加mongod选项参数bind_ip
mongod -–help
-bind_ip arg逗号分隔的IP地址列表 监听-默认情况下为localhost
-bind_ip_all绑定到所有IP地址
mongod --fork --logpath /var/log/mongodb.log --dbpath /data/db --bind_ip 0.0.0.0
答案 9 :(得分:0)
如果您使用的是Windows,请运行服务 然后检查mongoDB服务器是否正在运行,如果未运行,请启动它。
mongoDB服务器默认在本地主机上运行:27017。 单击localhost:27017首先创建一个管理员用户。