允许从同一个VPC上的EC2实例访问RDS实例

我无法访问MySQL RDS实例。

我试图从EC2实例连接到RDS实例。 RDS实例和EC2实例都包含在相同的VPC myVPC中。 我已经通过检查RDS实例和RC2实例中列出的VPC是否匹配来确认这一点。

我发现的关于这个问题的大部分问题都围绕着安全组。 许多用户都遇到了这个困难,通过确保与RDS实例关联的VPC安全组与其EC2实例相同,解决了他们的问题。 就我而言,两个实例都在同一个VPC上,并使用相同的安全组。 在这个安全组中,我有一条规则允许我的VPC的所有IP地址(例如,172.35.0.0/16)的所有入站stream量。 为了实现这一目标,我已经允许所有来自所有IP地址的端口的所有stream量用于这个安全组。 这仍然没有奏效。

一些文档的阅读build议你应该确保你的子网与你的VPC使用的路由表相关联。 我已经完成了这个路由表关联myVPC中的所有子网与这个路由表。

我也尝试过,没有弹性IP。 我可以使用弹性IP地址连接到我的EC2实例。

我意识到这个问题被问了很多。 到目前为止,我还没有解决我的问题。

编辑:添加安全设置的更多细节 ec2实例和RDS使用相同的安全组。 在那个安全组里面是一条类似的东西

MYSQL TCP 3306 172.35.0.0/16我的CIDR范围

我补充说

MYSQL TCP 3306 172.35.0.1/32我的ec2实例私有IP

以上都没有奏效。

什么DID的工作是在我的networkingACL设置我改变了一条线

1 MySQL(3306) TCP(6) 3306 172.35.0.1/32 ALLOW

1 ALL TRAFFIC ALL ALL 0.0.0.0/32 ALLOW

所以我的问题已经解决了,但现在我还有一个问题。 我如何避免让3306对所有入站连接开放。 我可以发布这个作为一个新的问题,并在这里链接。

几个星期前我自己也有过这个问题。 在我的情况下,我忘记了允许我的EC2实例的端口3306的出站stream量到VPC CIDR。 尝试向您的EC2实例安全组添加出站规则,如下所示:

 Type Protocol Port Range Destination MYSQL TCP 3306 172.35.0.0/16 

你确定你的数据库在你的EC2实例的VPC里面吗? 假设如此创build一个安全组,允许从您的VPC的CIDR范围3306入站。

要以稍微熟悉的方式进行testing,您可以使用MySQL创build一个实例,只要它也在您的VPC中。

确保您的RDS位于可从VPC中的其他机器访问的子网组中,例如,如果您是多个AZ,请确保您能够在子网之间进行路由。

更新:也尝试使用VPC IP,而不是外部DNS名称来访问它,您的DNS可能指向一个外部networking地址,否则将失败。

在寻找解决同样问题的方法之后,我想提供一些可以解决的问题。 最初我有RDS和EC2实例有不同的安全组。

更新RDS以使用VPC安全组后,我仍然无法连接。 最后的工作是当我为我的VPC的CDIR范围添加端口3306的入站规则时,由@TheFiddlerWins回答。

VPC安全组应该把这个规则封装起来,这已经让我失望了,我不能确切地说明为什么导致它工作,但是在那之后它确实起作用了。

我有同样的问题。 我正在使用免费层的微型实例进行testing。 如果您的RDS和EC2不在相同的可用区域,那么您将需要使用公共IP。 如果他们在同一个区域或EC2在多个区域之间共享,那么您可以使用私有IP。