无法从 php 连接到 AWS RDS MySQL

Unable to connect to AWS RDS MySQL from php

我是 AWS 新手,已经设置了一个 mysql RDS 实例。

我可以使用 MySQLWorkbench 从我的笔记本电脑进行连接,但是当我尝试从我的一台服务器(不是 aws 服务器)连接以下代码时,出现以下错误:

Warning: mysqli::mysqli(): (HY000/2002): Connection timed out in /home/asmserverco/public_html/sms/login.php on line 28 Connection failed: Connection timed out

这里是 php 连接代码:

$servername = "****.us-west-2.rds.amazonaws.com";
$username = "awsasm";
$password = "****";
$dbname = "sms";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

我已将实例安全组上的所有流量设置为允许来自任何 IP。

为什么我可以从我的笔记本电脑连接而不是我的网络服务器?

考虑到您是 运行 启用了 SELinux 的 CentOS,检查审计文件总是个好主意。

/var/log/audit/audit.log

话虽这么说,但我确定问题出在缺少网络标志。 运行 以下为 root。

setsebool -P httpd_can_network_connect 1

并再次尝试访问。

假设您没有修改 NACL,请检查 RDS 是否允许从您服务器的 IP 连接到端口 3306。如果你想为所有人打开它(这不安全因此不推荐)它应该是 0.0.0.0/0.

此外,确保 'Publicly Accessible' 设置为 'yes'。