因此,我在运行 Google Compute Engine 的 Ubuntu 18.10 VM 上安装了 MongoDB v4.0。安装成功,mongo
通过 SSH 与 shell 配合良好。现在我想从我的桌面远程访问数据库。
下列的这指南,我编辑了我的/etc/mongod.conf
文件并注释掉了bind_ip
以下代码中的行:
net:
port: 27017
# bindIp: 127.0.0.1
重启服务service mongod restart
还在 Google Cloud Platform 防火墙上打开了 TCP 端口 27017。
然而,数据库仍然无法通过任何方式访问,即mongo
安装在我本地机器上的 shell、MongoDB Compass、server_ip:27017
Google Chrome 上的格式都无法连接。
我sudo netstat -tlnp
通过虚拟机上的 SSH 运行,
对于 MongoDB,我只得到了以下一行:
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 18490/mongod
应该有那条线0.0.0.0
来表明它对所有连接都是开放的,但是仍然不见了。
这可能是配置错误还是某些内部防火墙阻止了连接?
编辑:我甚至确定 iptables 不会导致此问题。发出命令
iptables -A INPUT -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT
还是没有运气
答案1
解决了。这确实是配置问题,而不是防火墙问题。
显然,MongoDB 不再能正常工作bindIp: 0.0.0.0
或完全注释掉bindIp
。
有效的方法是删除 bindIp 行并将其替换为
bindIpAll: true
最终的代码如下:
网:
端口:27017
bindIpAll: true
# 绑定 IP: 127.0.0.1
PS 如果你在服务器上执行此操作,请不要忘记启用 MongoDB 身份验证
取消注释该行security:
并authorization: 'enabled'
在其下方添加。
安全:
授权:'已启用'