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

我不明白在bind_ipbind_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文档的参考:

bind_ip

默认:所有接口。

设置这个选项来configurationmongod进程或者mongos进程来绑定和监听这个地址上的应用程序的连接。 您可以将mongod或mongos实例附加到任何接口; 但是,如果将进程附加到可公开访问的接口,请执行适当的身份validation或防火墙限制,以保护数据库的完整性。

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

将您的计算机绑定到EC2上的127.0.0.1时,将无法访问您的计算机。 这不是一个错误,这是由networking接口​​绑定的原因。

127.0.0.1将仅绑定到回送接口(因此您只能在本地访问),而0.0.0.0将绑定到所有可用的networking接口。

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

对于本地服务器(如WAMP或本地mongodb服务器),看起来不会有所不同,但是对于这种情况,您还应该为本地服务器绑定到0.0.0.0 ,这样可以使它们在所有networking接口上都可用(所以它如果没有防火墙的话,对于知道你的IP的人可能是公开的)

请在这里阅读有关服务器故障的类似问题 。

到处写着你必须像这样绑定他们

 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打开。 虽然这对TESTING是可以的,但对于生产你应该知道这个设置的安全含义!

对于查询这个答案的人来说,将mongoDB绑定到0.0.0.0应该是你有史以来最糟糕的举动。

请阅读以下文章 ,并确保无论何时您决定公开您的(和您的客户)数据,请考虑以下事项:

  • 你有额外的防火墙规则来决定谁或什么可以
    访问您的服务
  • 了解在使用亚马逊EC2时,如果允许“内部”stream量应该被认为是相同的,把它放开,你并不孤单在亚马逊
  • 你的服务密码是否被保护? 什么样的authentication? 数据是以明文forms提交还是使用
    encryption
  • 你使用默认的数据库名称,还是复制粘贴的例子?