使用Amazon RDS和EC2时连接超时

3

我正在尝试使用php从EC2实例连接到RDS实例,但没有成功。

我尝试使用以下3行代码建立连接(顺便说一下,我正在使用MysqliDb):

$db = new MysqliDb ('rds_endpoint', 'username', 'password', 'databaseName');
$db = new MysqliDb ('rds_endpoint', 'username', 'password', 'databaseName', 3306);
$db = new MysqliDb ('rds_endpoint:3306', 'username', 'password', 'databaseName',);

当我尝试获取表格时,它给出了"2002 连接超时"的错误。我已经检查过表格存在。
同时,我检查了RDS和EC2的安全组,EC2入站规则接受所有IP,RDS入站规则接受我的EC2实例公共IP。我有另一个Amazon账户并尝试了以上操作,一切都很正常,所以我不知道在哪里找到错误。
谢谢。

3
最好将您的EC2实例的私有IP添加到白名单中,而不是公共IP。更好的做法是将其安全组添加到白名单中。 - ceejayoz
谢谢,现在它可以工作了! - VictorBG
1个回答

10

将其翻译为答案:

您需要将 EC2 实例的私有 IP 地址添加到白名单中,而不是公共 IP 地址。最好的方法是将其所在安全组添加到白名单中。

AWS 中的实例通过 EC2 和 RDS 实例的内部 IP 地址连接到 RDS,而不是它们的外部互联网面向 IP 地址。

安全组添加到白名单中而不是单个 IP 地址意味着更改 EC2 服务器的 IP 地址不会撤销其对 RDS 的访问权限,并且意味着将新实例启动到该安全组中将自动获得正确的访问权限。


你能解释一下如何将安全组加入白名单吗?设置私有IP地址可以工作,但我想弄清楚如何设置安全组。谢谢。 - tim.paetz
2
@tim.paetz,你只需编写安全组的 sg-f0123 样式 ID,而不是 IP。如果您开始输入其中一个名称,它将自动完成,如果我没记错的话。 - ceejayoz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接