使用Amazon RDS和EC2连接超时

Vic*_*rBG 2 php amazon-ec2 amazon-web-services

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

我尝试用这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',);
Run Code Online (Sandbox Code Playgroud)

当我试图得到一张桌子时,它给了我2002 Connection timed out.我检查了桌子.

此外,我检查了两者的安全组,RDS和EC2和EC2入站规则从所有ips接受,RDS入站规则接受我的EC2实例公共IP.我有另一个亚马逊帐户,并尝试上述工作正常,所以我不知道在哪里找到错误.

谢谢

cee*_*yoz 7

把它变成一个答案:

您希望将EC2实例的私有 IP 列入白名单,而不是公共IP.更好的是,将其安全组列入白名单.

AWS中的实例将通过EC2和RDS实例的内部IP地址连接到RDS,而不是其外部面向Internet的IP地址.

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

  • @ tim.paetz您只需编写安全组的sg-f0123样式的ID,而不是IP。如果您开始输入IIRC的名称,它将自动完成。 (2认同)