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

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

因此,我刚刚创建了 Amazon RDS 帐户。然后我启动了一个数据库实例。

The "endpoint" is:
abcw3n-prod.cbmbuiv8aakk.us-east-1.rds.amazonaws.com

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

mysql -uUSER -pPASS -habcw3n-prod.cbmbuiv8aakk.us-east-1.rds.amazonaws.com

但什么也没起作用,它只是挂了。

我尝试 ping 它,但也没用。什么也没发生。

我需要更改一些设置吗?

答案1

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

答案2

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

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

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

答案3

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

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

(路由组是我的问题;在创建新子网时,我忘记将其添加到具有网关的路由组中。)

答案4

我遇到过同样的问题 ;

  1. 安全组 > rds-launch-wizard(或为数据库 SG 选择的任何名称)
  2. 选择“入站”选项卡 > 编辑
  3. 添加新角色
  4. MySQL
  5. 源 -> 插入 aws vm ip(例如:12.3.14.80/32)

对我有用......

相关内容