【问题标题】:Connect to MongoDB on Azure (from client)连接到 Azure 上的 MongoDB(从客户端)
【发布时间】:2015-02-26 04:34:54
【问题描述】:

我正在尝试使用 Azure VM 设置我的 MongoDB 开发环境。虚拟机已启动并运行 MongoDB 2.6.6,我可以通过 SSH 连接到虚拟机并正常运行 MongoDB。

但是,我无法从任何外部客户端(即 cmd shell mongo 客户端或 robomongo)连接到 Mongo。我正在使用给我的公共 IP,并使用默认端口。我还尝试编辑 /etc/mongodb.conf 以指定端口号(端口 = 27017),并重新启动服务..但这似乎根本没有区别..

【问题讨论】:

  • 你应该在 ServerFault 上问这个,而不是 StackOverflow(因为它与编程无关)。
  • 我还可以在这里将 Robomongo 连接到 Mongolabs:stackoverflow.com/a/35935789/1578274

标签: mongodb azure azure-virtual-machine


【解决方案1】:

我假设这将被移至 ServerFault。同时:如果您只是启动一个新的 MongoDB 实例,则外部访问需要做两件事:

  1. mongod.conf中,bind_ip的默认配置为127.0.0.1,即mongod绑定到本地接口。注释掉这一行以监听所有接口
  2. Azure 专用:确保您创建了一个输入端点以允许外部流量到达 MongoDB VM。您可以将任何端口用于面向外部的一侧,并在内部将其映射到 27017。从约定的角度来看,在外部和内部都使用 27017 是有意义的,因为这是默认的 MongoDB 端口。

【讨论】:

  • 你能添加更多关于“2 Azure-specifically”的细节吗?
  • 我在 2014 年回答了这个问题,当时“经典”VM 是唯一的选择,您必须明确定义端口(输入端点)作为 Azure 中 VM 配置的一部分。这现在是 VM 的网络安全组的一部分(通过资源管理器创建的 VM)。有很多关于此的文档。关键是,如果你想从本地 VNet 外部访问它,你仍然需要在 VM 外部打开一个端口,以允许入站流量。
  • 谢谢!我遇到了一个问题,因为我尝试运行 mongo 不是作为服务而是手动启动 - 所以我不得不使用 --bind_ip_all 参数
【解决方案2】:

mongodb使用的端口没有对外开放。从客户端访问它的一种方法是打开 ssh 隧道。 mongodb 的默认端口是 27017: ssh -f -L 27017::27017

在此处阅读有关 ssh 隧道的更多信息: http://blog.trackets.com/2014/05/17/ssh-tunnel-local-and-remote-port-forwarding-explained-with-examples.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 2014-02-18
    • 2020-11-13
    • 2014-03-28
    • 2014-03-17
    相关资源
    最近更新 更多