我已经在 EC2 上的 redhat 虚拟机上安装了 mongoDB。
服务器在本地运行正常,我可以连接并执行命令等。现在,我尝试从 EC2 上的另一个虚拟机进行远程连接,但无论我怎么尝试都无法连接。起初我以为是安全组的问题,所以我尝试启用组内的所有端口(两个虚拟机都属于同一个安全组)我还在 iptables 文件中启用了连接(是的,重新启动了服务)但仍然不起作用... 有什么想法可以解决此问题吗?
我收到的错误是:
MongoDB shell version: 2.0.2
connecting to: ec2-XXXX.eu-west-1.compute.amazonaws.com/test
Thu Jan 5 13:55:32 Error: couldn't connect to server ec2-XXXX.eu-west-1.compute.amazonaws.com shell/mongo.js:86
exception: connect failed
预先感谢。
关于“bind_ip”设置,嗯...它没有默认值,我的意思是默认情况下,mongodb.conf 上甚至没有 bind_ip 行。我可能期望 bind_ip = 127.0.0.1 这样的东西,这样我就可以将其注释掉,但它不在那里,所以我尝试使用 bind_ip = 0.0.0.0,但仍然不起作用。
答案1
希望这能有所帮助。您需要明确告诉 mongodb 在非本地主机设备上进行监听。默认情况下,它仅在本地主机上运行。
从http://www.mongodb.org/display/DOCS/Security+and+Authentication:
IP 地址绑定 默认情况下,mongod 服务器将监听机器上所有可用的 IP 地址。您可以使用 mongod 的“bind_ip”配置选项将其限制为单个 IP 地址。
通常,这将设置为 127.0.0.1,即环回接口,以要求 mongod 仅监听来自同一台机器(localhost)的请求。
要启用所有接口的监听,请从服务器配置文件中删除 bind_ip 选项。
更新:我想我自己也搞糊涂了。我认为默认行为与上面描述的不同。(也许以前是这样?)无论如何,您应该检查 mongo 配置文件,以确保已按预期进行配置。
答案2
已解决!对于使用 EC2 默认 redhat 安装的任何人,都需要运行此命令:
系统配置防火墙-tui
答案3
使用 mongoDB 服务器版本 3.6.4,Ubuntu 16.4.4 我通过像这样设置 /etc/mongod.conf 中的网络部分解决了这个问题:
net:
port: 27017
bindIpAll: true
# bindIp: 127.0.0.1
答案4
如果您正在使用 aws,请确保安全组允许端口 27017。我浪费了两个小时才弄清楚这一点。