为什么我设置后无法连接到 Amazon RDS?

Ale*_*lex 48 mysql networking amazon-ec2 amazon-rds

所以,我刚刚创建了 Amazon RDS 帐户。我启动了一个数据库实例。

The "endpoint" is:
abcw3n-prod.cbmbuiv8aakk.us-east-1.rds.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

伟大的!现在我尝试从我的其他 EC2 实例之一连接到它。

mysql -uUSER -pPASS -habcw3n-prod.cbmbuiv8aakk.us-east-1.rds.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

但没有任何作用,它只是挂起。

我试图ping它,也没有任何效果。没发生什么事。

我需要更改一些设置吗?

Jer*_*use 50

默认情况下,RDS 不允许任何未在安全组 (SG) 中指定的连接。您可以根据 CIDR 地址或 Amazon 帐号允许该帐户下的任何 EC2 访问它。


One*_*roi 29

它“只是挂起”,因为您尚未将防火墙配置为接受来自其他实例的 mySQL 连接,因此数据包在防火墙级别被丢弃,要解决此问题,您需要:

  1. 进入您的 AWS 控制台
  2. EC2 选项卡
  3. 记下你的 mySQL 服务器的安全组(现在称之为 SG-MYSQL)
  4. 单击控制台左侧的安全组
  5. 在中心菜单 SG-MYSQL 中单击您的组
  6. 单击入站选项卡
  7. 从列表中选择 mySQL,添加客户端服务器的详细信息并保存规则

注意服务器的源 IP 不会是您的弹性 IP(无论如何在大多数情况下)您将在设备上拥有一个内部 IP(Linux 上的 ifconfig 会向您显示这一点)。


wil*_*ley 10

这里有很多关于安全组的讨论,还要检查:

  • 关联的子网是否配置正确?
  • 子网是否属于似乎配置正确的路由组(指定 Internet 网关等?)
  • RDS 是否说它可以公开访问?
  • 当然还要检查 RDS 安全组和 EC2 安全组
    • 不要忘记您的实际源 IP 可能是内部 IP(如果通过 VPC 在内部访问)或外部 IP(可能是路由器的 IP,或 EC2 实例的实例 IP,它不同于负载均衡器/弹性 IP) -- 要进行故障排除,您可以尝试允许访问所有 IP 和端口。

(路由组是我的问题;在创建新子网时,我忽略了将其添加到带有网关的路由组。)