我已经设置了一个 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。