我已经build立了一个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);
我发现了一个类似的问题 。
解决方法是运行setsebool -P httpd_can_network_connect=1
我必须对SELinux进行更改,我的实例是RHEL6。
setsebool httpd_can_network_connect=1 setsebool httpd_can_network_connect_db on
我发现奇怪的是,SELinux没有logging/var/log/audit/audit.log
这帮助了我:
我删除了我的DSN中的端口规范。 然后pipe理连接表单EC2到RDS。
链接: https : //stackoverflow.com/questions/23955446/sqlstatehy000-2005-unknown-mysql-server-host-mysql1-alwaysdata-com3306-2