php - 使用 Amazon RDS 和 EC2 连接超时

标签 php amazon-web-services amazon-ec2

我正在尝试使用 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/

相关文章:

ruby - 在 AWS Linux 上增加 RestClient/Net::HTTP 中的 connect(2) 超时

php - 登录表单问题 PHP/MySQL。

amazon-web-services - 如何将 AWS Glue 作业的输出返回到调用 Step Function 工作流?

amazon-web-services - AWS API 工具与 AWS CLI : Is there a reason to use one instead of the other?

amazon-web-services - 将 SSL 添加到 AWS Beanstalk

javascript - 通过浏览器 (Google Chrome) 执行 EC2 命令

python - 在 Amazon EC2 上远程访问 Python 网络服务器

javascript - 将 PHP 与 node.js/javascript 连接

php - 5 次尝试记录页面

php - 如何使用 PHP MySQL 对列的值进行分组?