无法通过 PHP 从 EC2 连接到 RDS。我可以直接想到

无法通过 PHP 从 EC2 连接到 RDS。我可以直接想到

我已经设置了一个 EC2 实例,它安装了 mysql 和 php-mysql(而不是 mysql-server)。

我已经设置了一个 RDS 实例并将安全组设置为 EC2 实例。

通过 EC2 的命令行进行连接,但是当我尝试通过 mysqli 连接时,出现以下消息:无法连接到“XXXX.xxxxxxx.us-east-1.rds.amazonaws.com”上的 MySQL 服务器

这是我第一次与两者合作。

我这里遗漏了什么吗?

define("HOST", "XXXX.xxxxxxx.us-east-1.rds.amazonaws.com");
define("DBUSER", "my_user");
define("PASS", "********");
define("DB", "mydb");
define("PORT", 3306);

$link=mysqli_connect(HOST,DBUSER,PASS,DB,PORT); 

// Check connection
if (mysqli_connect_errno($link)){
    echo "Failure to connect: " . mysqli_connect_error();
}

mysqli_close($link);

答案1

我发现了一个类似问题

解决方案是运行setsebool -P httpd_can_network_connect=1

答案2

我必须对 SELinux 进行更改,我的实例是 RHEL6。

setsebool httpd_can_network_connect=1 setsebool httpd_can_network_connect_db on

我觉得奇怪的是,SELinux 没有记录任何异常/var/log/audit/audit.log

答案3

这对我有帮助:

我删除了 DSN 中的端口规范。然后设法将 EC2 连接到 RDS。

关联: https://stackoverflow.com/questions/23955446/sqlstatehy000-2005-unknown-mysql-server-host-mysql1-alwaysdata-com3306-2

相关内容