如何在MongoDB上仅监听本地主机?

50

MongoDB建议处理安全问题的简单方法是在受信任的环境中运行,因为“在这种配置下,必须确保只有受信任的机器可以访问数据库TCP端口。”

如何最好地处理这个问题?mongodb本身是否有一种仅监听localhost的方式?

我正在使用ubuntu 10.10。


可以请您把我的答案选为更正确的吗? - freedev
5个回答

98

将以下一行添加到mongodb.conf中:

bind_ip = 127.0.0.1

正如@Josh Rickard在评论中所述:不要忘记在更新配置文件后重新启动进程:

service mongodb restart

4
这对我很有效。在更新配置文件后别忘了重新启动进程:service mongodb restart - Josh Rickard
2
感谢您的回答。我在这里留下这个链接,以便像我一样寻找这些信息的人使用:http://docs.mongodb.org/manual/core/security/ - OZ_
8
这不应该成为MongoDB的默认设置吗?新安装的MongoDB是否真的没有任何身份验证就对外开放了? - Thomas Jensen
2
@ThomasJensen 我刚刚从官方的Debian/Ubuntu源安装了mongodb,默认设置为localhost(现在)。 - Daniel W.
我之前也认为在安装时mongo只能设置为本地主机,如果想要其他设置就必须更改配置。但是我收到了Digital Ocean的一条消息,说我的服务器中有一个开放的mongo实例。我无法从公共IP访问mongo实例,所以我不确定Digital Ocean是如何访问它的。但他们肯定访问过,因为他们只警告我我运行了一个mongo服务器实例。 - B T

35

正如Andreas间接提到的:

mongod --bind_ip 127.0.0.1

3
我觉得很奇怪为什么这么重要的配置选项没有包含在配置文件的示例中。 - Fabrizio Regini
要将此添加到Windows服务中,您需要编辑[HKLM\SYSTEM\CurrentControlSet\Services\MongoDB]处的注册表项。 - msteiger

5
请注意,尽管我上次查看文档时没有出现这个设置,但您也可以将此设置放在.conf文件中(而不是命令行)。
没有设置=绑定到所有IP地址。

2
没有人提到mongodb.conf文件的位置,它在/etc/mongodb.conf。在运行以下命令之前,请仔细检查。
echo "bind_ip = 127.0.0.1" >> /etc/mongodb.conf
service mongodb restart

1
随着新版本的推出,它被重命名为 /etc/mongod.conf - hzitoun

0

这个配置在Windows上的4.4版本中似乎是默认的...

C:\Program Files\MongoDB\Server\4.4\bin\mongod.cfg

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1

...以防还有其他“可怜的灵魂”支持或使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接