我在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安全设置如下所示:
我错过了什么?
答案 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。