因此,我刚刚创建了 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 连接,因此数据包在防火墙级别被丢弃,要解决这个问题,您需要:
- 进入 AWS 控制台
- EC2 选项卡
- 记下你的 mySQL 服务器的安全组(暂时称之为 SG-MYSQL)
- 点击控制台左侧的安全组
- 在中心菜单 SG-MYSQL 中单击您的组
- 点击入站标签
- 从列表中选择 mySQL,添加客户端服务器的详细信息并保存规则
注意,服务器的源 IP 不会是您的弹性 IP(无论如何在大多数情况下),您将在设备上拥有一个内部 IP(Linux 上的 ifconfig 将显示此 IP)。
答案3
这里有很多关于安全组的讨论,但也要检查:
- 相关子网配置是否正确?
- 子网是否属于配置正确的路由组的一部分(指定了 Internet 网关等?)
- RDS 是否表明它是可公开访问的?
- 当然还要检查 RDS 安全组和 EC2 安全组
- 不要忘记您的实际源 IP 可能是内部 IP(如果通过 VPC 进行内部访问)或外部 IP(可能是路由器的 IP,或 EC2 实例的实例 IP,与其负载均衡器/弹性 IP 不同) - 为了排除故障,您可以尝试允许访问所有 IP 和端口。
(路由组是我的问题;在创建新子网时,我忘记将其添加到具有网关的路由组中。)
答案4
我遇到过同样的问题 ;
- 安全组 > rds-launch-wizard(或为数据库 SG 选择的任何名称)
- 选择“入站”选项卡 > 编辑
- 添加新角色
- MySQL
- 源 -> 插入 aws vm ip(例如:12.3.14.80/32)
对我有用......