无法连接到AWS EC2实例上的MongoDB实例

时间:2016-05-25 02:11:42

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

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

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

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

我已将bindIp中的/etc/mongod.conf更改为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安全设置如下所示:

enter image description here

我错过了什么?

1 个答案:

答案 0 :(得分:1)

您尚未指定您正在使用的MongoDB版本,但由于您正在显示YAML配置,因此我认为它是2.6或更高版本。

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

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。