下面是“SELinux导致PHP连接MySQL异常Can't connect to MySQL server的解决方法”的完整攻略。
问题描述
在使用PHP连接MySQL时,可能会遇到以下报错信息:
Can't connect to MySQL server
这种情况一般是由于SELinux所导致的权限问题所致。
解决方法
方法一:更改SELinux策略
可以通过下面的命令开启SELinux对Apache连接MySQL的支持:
# setsebool -P httpd_can_network_connect_db 1
其中,可以通过-P
参数使其永久生效。
方法二:更改文件许可权限
以下为示例代码:
# chcon system_u:object_r:httpd_sys_content_t:s0 /var/www/html/myphpapp -R
其中,/var/www/html/myphpapp
为应用程序所在目录,-R
为递归执行更改。
示例说明
示例1
假设我们的应用程序使用的是/var/www/html/myphpapp
目录下的PHP文件,而由于SELinux的访问控制策略不允许Apache服务连接MySQL,导致无法建立MySQL连接。
我们可以通过执行以下命令更改SELinux策略:
# setsebool -P httpd_can_network_connect_db 1
示例2
假设我们的应用程序需要使用/var/www/html/myphpapp
目录下的PHP文件来连接MySQL,并且我们不想在SELinux中关闭该目录的许可权限。
我们可以通过执行以下命令更改目录的许可权限:
# chcon system_u:object_r:httpd_sys_content_t:s0 /var/www/html/myphpapp -R
这将会递归地更改目录下文件的SELinux标签,使之具备httpd_sys_content_t
的属性,从而允许Apache服务连接MySQL。
结论
以上两种方法均可解决SELinux导致PHP连接MySQL异常的问题,建议根据实际情况进行选择。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SELinux导致PHP连接MySQL异常Can’t connect to MySQL server的解决方法 - Python技术站