【问题标题】:Cannot connect to MongoDB instance on AWS EC2 instance无法连接到 AWS EC2 实例上的 MongoDB 实例
【发布时间】:2016-09-22 10:36:54
【问题描述】:

我在 AWS EC2 Ubuntu 实例上创建了一个 MongoDB 实例。

MongoDB 正在运行,当我 ssh 进入机器并运行 MongoDB mongod 控制台时,我能够创建数据库,因此我确信它运行成功。

但是,我无法通过浏览器从本地计算机访问数据库。

我已将/etc/mongod.conf 中的bindIp 更改为0.0.0.0,并通过执行sudo ufw allow 27017 打开了端口27017,但我的浏览器尝试连接时仍然超时。

当我尝试使用 mongod --config /etc/mongod.conf 配置实例时,出现错误:

CONTROL  [main] Failed global initialization: FileNotOpen: Failed to open "/var/log/mongodb/mongod.log"

此文件存在!配置文件的相关部分如下所示:

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

我读到您必须通过指定 --rest 来启用 REST 接口,但我不知道如何执行此操作,因为我正在使用 sudo service mongod start 命令启动数据库服务。

我的 AWS 安全设置如下所示:

我错过了什么?

【问题讨论】:

    标签: mongodb ubuntu amazon-web-services amazon-ec2


    【解决方案1】:

    您尚未指定您使用的 MongoDB 版本,但由于您显示的是 YAML 配置,我假设它是 2.6 或更高版本。

    您可以通过 mongodb.conf 使用以下命令启用 REST 接口(根据 https://docs.mongodb.com/v3.0/reference/configuration-options/):

    net:
       http:
          enabled: true
          RESTInterfaceEnabled: true
    

    根据MongoDB docs,REST 接口(在 3.2 中已弃用)侦听端口 28017(1000 + mongod 端口),因此您必须为该端口打开防火墙。

    另外,我强烈建议不要向世界开放任何数据库端口 (0.0.0.0)。找到您笔记本电脑的 IP(或者可能是您的 ISP 分配的路由器 IP)并添加它。

    您的浏览器可能无法连接(您没有指定确切的错误),因为 mongodb 不使用 HTTP 或任何其他浏览器协议,并且您的浏览器不知道如何与之对话。即使启用了 REST 接口,您也无法使用浏览器做很多事情。尝试在您的笔记本电脑上安装 mongo shell(确保您获得与服务器上的 mongodb 相同的版本),看看您是否可以使用它连接到端口 27017。

    【讨论】:

    • 谢谢你,我会试试的。据我了解,被弃用的只是 28017 上的管理控制台,而不是 27017 上的 RESTful 界面。这是一种误解吗?
    • 嗯。现在,当尝试查看 http//xx.xx.xx.xx:27107/databasename 上的数据库时,我收到消息“看起来您正试图在本机驱动程序端口上通过 HTTP 访问 MongoDB。”。是否不再可以通过 HTTP 查询数据库?我正在使用最新版本的 MongoDB(我认为是 3.2.6 版)。
    • 我没有超过 3.0 的安装来测试,但文档似乎暗示他们正在弃用 http。 28017 有用吗?
    猜你喜欢
    • 2016-08-20
    • 2018-01-03
    • 2016-08-24
    • 1970-01-01
    • 2018-05-01
    • 2015-10-19
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多