29

我不明白bind_ipmongodb 是什么。我可以通过拥有从桌面远程连接到 EC2 机器bind_ip = 0.0.0.0,但无法使用它bind_ip = 127.0.0.1

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

来自mongodb 文档的参考:

bind_ip

默认值:所有接口。

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

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

4

4 回答 4

53

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

bindIp : 127.0.0.1,192.168.0.50

但它不起作用。

它是如何工作的,在 3.2.0 版本中是

bindIp : [127.0.0.1,192.168.0.50]

所以尝试在 [ ] 中添加您的 ip

例子 :

# network interfaces
net:
      port: 27017
      bindIp : [127.0.0.1,0.0.0.0]  (read what is written below in BOLD!)

但是 0.0.0.0 打开了这些东西。虽然这对于测试来说是可以的,但对于生产来说,你应该知道这个设置的安全隐患!

于 2016-01-09T20:07:04.217 回答
46

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

127.0.0.1当您将其绑定到EC2 上时,您无法访问您的机器。这不是错误,它是由网络接口​​绑定引起的。

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

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

对于本地服务器(如 WAMP 或本地 mongodb 服务器),您看起来不会有所不同,但在这种情况下,您还应该绑定到0.0.0.0本地服务器可能使它们在所有网络接口上可用(因此它可能是公共的对于知道您 IP 的人,如果没有防火墙!)

在此处阅读有关服务器故障的类似问题

于 2013-07-11T08:48:14.423 回答
14

任何查找此答案的人都应该清楚,将您的 mongoDB 绑定到 0.0.0.0 可能是您有史以来最糟糕的举动。

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

  • 您是否有额外的防火墙规则来决定谁或什么可以
    访问您的服务
  • 了解在使用 Amazon EC2 时,如果您允许“内部”流量,则应将其视为完全开放,您在 Amazon 并不孤单
  • 您的服务密码受保护吗?以及什么样的身份验证?数据是以明文形式提交还是使用
    加密方式提交
  • 您是使用默认数据库名称,还是复制粘贴示例?
于 2015-12-18T14:52:13.357 回答
1

为了链接到本地​​ Mongo db 安装(开发环境),我发现以下 3 步过程更容易 - 而且它有效。

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

  2. docker exec -it mongodb bash

  3. mongo (voilla - 你在即连接到 Mongo dab)

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

于 2020-07-17T15:47:04.127 回答