PHP无法与MySQL连接,错误为13(但命令行可以)

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

我在新安装的服务器上遇到了奇怪的情况,这次谷歌似乎帮不了我。我无法从我的php-代码连接到(远程)MySQL。当我试图从同一服务器上的命令行连接时,连接就会成功。

无法连接:无法连接到MySQL上的MySQL服务器。服务器‘(13)

下面是命令行的代码和连接尝试

[u1@bosko httpdocs]$ cat  test.php

<?
$link = mysql_connect('MYSQL.SERVER', 'testusersimon', '123456');
if (!$link) {
    die('Could not connect: ' .  mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>

[u1@bosko httpdocs]$ mysql -h MYSQL.SERVER -utestusersimon --password=123456
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 352108
Server version: 5.0.45-community-nt-log MySQL Community Edition (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> quit
Bye

我尝试在mod中运行php脚本。[医]PHP模式和FastCGI中,检查phpinfo()以及MySQL、mysqli和PDO中是否显示“/etc/php.d/mysql.ini”[医]MySQL部分。

但结果是一样的,我知道事情很简单,但我就是不能。请帮助:)

问题在于SElinux

setsebool -P httpd_can_network_connect_db=1

是解决办法。

提问于
用户回答回答于
setsebool -P httpd_can_network_connect=1

对于访问此问题的许多人来说,也是一个有用的cli命令,以便允许mysql。[医]从HTTP(Apache)请求到远程MySQL数据库服务器的Connet()连接,确保启用来自SElinux中的httpd(通常位于/etc/selinux/config中)的网络连接(默认禁用,以防止黑客使用httpd攻击其他计算机)。

用户回答回答于

在CentOS 6上,可以使用以下内容(不使用-P)

setsebool httpd_can_network_connect=1

扫码关注云+社区