我正在尝试使用 php 从 EC2 实例连接到 RDS 实例但没有成功。
我尝试使用这 3 行来建立连接(我正在使用 MysqliDb btw):
$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',);
当我尝试找一张 table 时,它给了我
2002 Connection timed out
.我检查并且表存在。我还检查了 RDS 和 EC2 的安全组和 EC2 入站规则接受来自所有 ips 和 RDS 入站规则接受我的 EC2 实例公共(public) IP。我有另一个亚马逊帐户并尝试了上述方法并且工作正常,所以我不知道在哪里可以找到错误。
谢谢
最佳答案
把它变成一个答案:
您需要将 EC2 实例的 列入白名单私有(private) IP,不是公共(public)的。更好的是,将其安全组列入白名单。
AWS 中的实例将通过 EC2 和 RDS 实例的内部 IP 地址连接到 RDS,而不是它们面向 Internet 的外部 IP 地址。
将安全组而不是单个 IP 列入白名单意味着对 EC2 服务器的 IP 更改不会撤销其 RDS 访问权限,并且意味着在该安全组中启动新实例将自动获得正确的访问权限。
关于php - 使用 Amazon RDS 和 EC2 连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44167825/