【发布时间】:2014-06-20 16:24:12
【问题描述】:
我创建了一个 MySQL RDS 数据库实例,并确保该实例位于一个安全组内,该安全组应该允许我从外部连接到它。安全组允许来自所有 IP 地址的所有类型的流量。 RDS 与我制作的 EC2 在同一个安全组中。
我可以通过 SSH 连接到 EC2 来连接到数据库实例,然后使用我安装在该 EC2 上的 mysql CLI 客户端连接到 RDS。但是,我无法从个人计算机上的 MySQL 客户端直接连接到 RDS。我对 RDS 使用相同的主机和用户名,但绕过 EC2 不起作用。
通过谷歌搜索,我得到的错误似乎通常是由 RDS 的安全组不允许来自我的计算机的流量引起的 - 但事实并非如此,因为我三重检查了安全组是否打开所有公共交通。哎呀,RDS与EC2在同一个安全组中,我能够连接到EC2。
那么发生了什么?
【问题讨论】:
-
您的安全组可能允许端口 22、80 和 443(ssh、http、https),而对于 mysql,您需要打开 3306。此外,权限是基于端口的,因此您需要明确允许您当前的 IP 用于端口 3306(除非您想允许所有人使用,这是一个坏主意)
-
@amenadiel 安全组对来自所有 IP 地址的所有协议中的所有入站流量完全开放。我意识到这并不安全,但这只是出于开发目的。我以这种方式配置它,以便我知道安全组不应该妨碍。
-
您说您的 RDS 安全组与您的 EC2 安全组相同...但是 sec 组面板不同。您的意思是说您将两者配置为具有相同的规则吗?您可以发布您的 RDS 安全组的屏幕截图吗?另外:您使用的是 VPC 还是普通的 RDS + EC2
-
@amenadiel 我使用的是 VPC,因此 RDS 的安全组实际上与 EC2 的安全组完全相同。这是 sec 组的入站流量设置的快照:i.imgur.com/zuRihEA.png 和出站流量相同,只是没有第二行。
标签: mysql amazon-web-services amazon-rds