我们有来自Amazon MarketPlace的EC2 MongoDB 2.4实例。 当我尝试使用mongo命令从我的计算机访问它时,如下所示:
mongo xx-xx-xx-xx-xx.compute-1.amazonaws.com
我收到以下错误
Error: couldn't connect to server xx-xx-xx-xx-xx.compute-1.amazonaws.com:27017 at src/mongo/shell/mongo.js:147
exception: connect failed
有关如何解决此问题的任何建议?
答案 0 :(得分:21)
如弗里斯基所说,您必须在EC2安全组控制台打开端口27017。 (要了解有关如何执行此操作的详细信息:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/authorizing-access-to-an-instance.html)
但您还需要在/etc/mongodb.conf文件中更改bind_ip
变量。您需要注释该行或分配能够将DB连接到它的IP。
答案 1 :(得分:7)
由于mongod正在运行并处理远程实例,因此您可以通过
访问MongoDB内容mongo xx-xx-xx-xx-xx.compute-1.amazonaws.com或 mongo machine_elastic_IP
在此之前,您需要打开该机器的入站端口。对于外部世界,关闭默认端口27017。
有关详细信息,请参阅:http://docs.aws.amazon.com/gettingstarted/latest/wah/getting-started-security-group.html
答案 2 :(得分:5)
亚马逊创建的mongo安全组没有打开27017。 打开端口27017到我的电脑修复了这个问题。
答案 3 :(得分:2)
以下两个步骤为我启用了远程连接:
之后,您将可以使用mongo --host YOUR_INSTANCE_IP连接到您的远程mongo实例
答案 4 :(得分:1)
尝试从浏览器访问xx-xx-xx-xx-xx.compute-1.amazonaws.com:27017,如果它可以,则ssh进入实例。
/var/lib/mongodb/mongod.lock
再次启动mongodb服务器,检查键入mongo
是否进入mongo shell或者是否有任何错误。
如果存在错误,请退出实例并再次ssh以检查$mongo
是否打开mongo shell。如果在上述更改后错误仍然存在,请在此更改后尝试重新启动。
这里唯一关心的是,在从任何应用程序访问它之前。 Mongodb应该在终端中独立工作。
答案 5 :(得分:0)
EC2控制使用安全组的访问权限,因此请确保访问mongo db host的框位于允许访问此框的security group
中,并且为同一安全组启用了port
。
另一个问题可能是iptables
。检查mongodb框上的sudo service iptables status
,看看那里的规则是什么。
确保按照security
框的要求启用了适当的端口。