如果我只使用mongo
命令运行mongodb shell,会出现以下错误:
Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84
异常:连接失败
但是,如果我像这样指定本地主机的LAN IP地址:
mongo 10.10.5.90
...它连接成功了。
有什么线索吗?
你的mongodb.conf (或者启动脚本) 是否有设置bind_ip
? 编辑以使意思更清晰 bind_ip
设置限制了它只监听设定的IP地址。
请查看 "IP地址绑定" 部分: http://www.mongodb.org/display/DOCS/Security+and+Authentication
如果没有,您是否有任何防火墙规则阻止本地访问?这有点奇怪,但我无法想到其他原因为什么LAN IP可以工作而localhost不行。
如果 mongodb 没有正确关闭,也会出现此错误。如果您输入sudo start mongodb
并且每次执行都会给出一个新的进程 ID,则表示mongodb没有正确关闭。要解决此问题,请键入:
sudo rm /var/lib/mongodb/mongod.lock
sudo -u mongodb mongod -f /etc/mongodb.conf --repair
sudo start mongodb
Step 1: Remove lock file.
sudo rm /var/lib/mongodb/mongod.lock
Step 2: Repair mongodb.
mongod --repair
Step 3: start mongodb.
sudo start mongodb
or
sudo service mongodb start
Step 4: Check status of mongodb.
sudo status mongodb
or
sudo service mongodb status
Step 5: Start mongo console.
mongo
我更喜欢配置
net:
bindIpAll: true
或者
net:
bindIp: localhost
net:
bindIp: 10.10.5.90
仅在具有多个网络接口的计算机上才有意义。
注意,现在已经是2023年,增加这一点是有意义的。
net:
ipv6: true
或者 mongod --ipv6 ...
,因为IPv6默认是禁用的,但IPv6越来越普遍。
对于在VMWare windows上使用MongoDB Compass的人:
C:\Program Files\MongoDB\Server\5.0\bin是默认的Mongo服务器目录。 您可以在mongod.cfg中更改bindIp和端口。
还要确保检查mongo服务器服务是否正在运行: win + r > services.msc > MongoDB Server (MongoDB) > 右键单击 > 启动。
希望能节省一些时间,希望能有所帮助。
我在启动Mongo时,将localhost与我在bind_ip中拥有的IP一起添加,这解决了我的问题,例如: bin/mongod --dbpath data --logpath mongo.log --fork --bind_ip localhost,10.100.1.2
按照以下方式编辑您的mongod.conf文件
bindIp: 0.0.0.0,localhost
这对我有效。