mongodb.conf bind_ip = 127.0.0.1不起作用,但0.0.0.0工作

时间:2013-07-11 08:42:52

标签: mongodb amazon-ec2

我无法理解mongodb中的bind_ip是什么。我可以通过bind_ip = 0.0.0.0建立从桌面到EC2计算机的远程连接,但无法使其与bind_ip = 127.0.0.1一起使用。

请解释一下bind_ip是什么以及为什么它适用于0.0.0.0而不是127.0.0.1

mongodb docs参考:

  

bind_ip

     

默认值:所有接口。

     

设置此选项可将mongod或mongos进程配置为绑定并侦听此地址上应用程序的连接。   您可以将mongod或mongos实例附加到任何接口;然而,   如果您将流程附加到可公开访问的界面,   实施适当的身份验证或防火墙限制来保护   数据库的完整性。

     

您可以连接逗号分隔值列表以将mongod绑定到多个IP地址。

4 个答案:

答案 0 :(得分:46)

无处不在,你必须像这样绑定它们

bindIp : 127.0.0.1,192.168.0.50

但不起作用。

工作原理,版本3.2.0是

bindIp : [127.0.0.1,192.168.0.50]

所以尝试在[]

中添加你的ips

示例:

# network interfaces
net:
      port: 27017
      bindIp : [127.0.0.1,0.0.0.0]

但是0.0.0.0会打开。虽然这对测试来说没问题,但对于生产,您应该知道此设置的安全隐患!

答案 1 :(得分:39)

在将服务器绑定到0.0.0.0之前,请明确这些更改的安全隐患:您的服务器将公开暴露给整个互联网上的所有IP。请务必在您的服务器上启用身份验证!

将您的计算机绑定到EC2上的127.0.0.1时,无法访问该计算机。这不是一个错误,它是由网络接口​​绑定引起的。

127.0.0.1只会绑定到loopback接口(因此您只能在本地访问它),而0.0.0.0会将其绑定到所有可用的网络接口。

这就是为什么当你将mongodb绑定到0.0.0.0(因为它现在可通过互联网获取)而不是127.0.0.1时,你可以在EC2上访问你的mongodb。

对于本地服务器(如WAMP或本地mongodb服务器),它们看起来与您不同,但对于这种情况,您还应该为本地服务器绑定到0.0.0.0可能使它们全部可用网络接口(如果没有防火墙,那么知道你的IP的人可能会公开!)

在此处阅读similar question on Server Fault

答案 2 :(得分:12)

任何看过这个答案的人都应该清楚,将你的mongoDB绑定到0.0.0.0可能是你有史以来最糟糕的举动。

请阅读以下article并确保无论何时决定公开您的(和您的客户)数据,您都会考虑以下因素:

  • 您是否有其他防火墙规则来决定谁或什么可以 访问您的服务
  • 了解在使用Amazon EC2时,如果您允许使用“内部”和“内部”。交通它应该被视为与它敞开,你 在亚马逊并不孤单
  • 您的服务密码是否受到保护?什么样的身份验证?数据是以明文形式提交还是使用
    加密
  • 您使用的是默认数据库名称,还是复制粘贴了一个示例?

答案 3 :(得分:1)

对于链接到本地​​Mongo db安装(开发环境),我发现以下3个步骤的过程要容易得多-并且有效。

  1. docker run -d -p 27017-27019:27017-27019 --name mongodb mongo

  2. docker exec -it mongodb bash

  3. 蒙哥(瞧-您在与蒙哥民警的连接中)

来源:https://www.thepolyglotdeveloper.com/2019/01/getting-started-mongodb-docker-container-deployment/