2011-01-22 87 views
10

我还有一个问题给你。 我有安装了mondodb的Amazon EC2实例。 除了一件事情 - 它无法从外部(我的电脑)访问(连接),它工作得很好。 我认为安全组的问题。这是某种默认的防火墙。 有谁知道如何配置EC2实例访问mongodb? 在此先感谢。在亚马逊EC2上访问Mongodb的问题

回答

10

您需要添加一个安全组例外端口27017,如果你使用的是默认的配置为您从外部访问它。有关安全组配置,请查看amazon EC2文档。如果您在Mongo上使用不同的端口,请相应地更改安全组端口。

--Sai

+0

我知道我应该这样做,但我无法弄清楚究竟是什么。 – clumpter 2011-01-22 17:20:57

+22

确保你已经从`mongodb.conf`中注释掉`bind_ip` – 2011-10-14 07:56:10

+3

然后不要忘记重新启动mongod服务 – 2014-10-02 11:24:42

39

在做这件事之前仔细考虑。如果您打开端口,请确保限制可以访问它的IP号码,否则任何人都可以访问您的数据库。你可以在MongoDB中启用认证,但它不是特别安全,只是一个用户名和密码。你不应该让你的数据库对互联网开放,这不是一个好主意。

比EC2防火墙上开一个口一个更好的办法是打开一个SSH隧道的转发端口,这样可以确保只有您可以访问数据库,并仅在SSH隧道是活动的。

打开一个新的终端并运行此命令(您SSH'ing到您的服务器时使用的用户和服务器的名称替换用户和主机):

ssh [email protected] -N -L 27017:127.0.0.1:27017 

该命令将转发将计算机上的端口27017连接到服务器上的同一端口。要连接到MongoDB实例,只需在终端中运行mongo(如果不起作用,请尝试mongo --host 127.0.0.1或甚至mongo --host 127.0.0.1 --port 27017)。

如果您在本地机器上运行的MongoDB,你将不得不改变第一口,因为本地服务器已在使用它。在这种情况下运行此命令:

ssh [email protected] -N -L 27018:127.0.0.1:27017 

,然后用

mongo --port 27018 

(可能添加--host 127.0.0.1,如果它不工作)连接。

当您完成与数据库的工作,退出mongo,然后按Ctrl-C与SSH命令的终端。

5

您的EC2实例是否是Windows服务器?如果是这样,除了EC2的安全组之外,还需要配置Windows防火墙以允许传入连接。

转到管理工具,Windows防火墙具有高级安全性,并配置新的规则,允许在端口27017(默认端口蒙戈)或任何与您所选择的传入连接。