连接数据库错误类型:2002:权限被拒绝
Connect DATABASE Error TYPE: 2002: Permission denied
我正在尝试使用以下脚本连接数据库(cxn-test.php)
<?php
$host = '155.30.136.20';//dummy ip
$user = 'abc_user';
$pass = 'xxxxxxxxx';
$dbname = 'welcome';
$link = mysqli_connect($host, $user, $pass,$dbname);
if (!$link) {
echo "Error: Unable to connect to MySQL." . PHP_EOL;
echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
exit;
}else {
echo "success" . PHP_EOL;
}
当我在终端上尝试时
php cxn-test.php //success
但是当我在本地主机上尝试时,出现以下错误,
curl -s http://localhost/cxn-test.php
Error: Unable to connect to MySQL.
Debugging errno: 2002
Debugging error: Permission denied
这是一个奇怪的问题,它在本地主机上不起作用,但在命令行上运行良好。
我在获得新的 CentOS 7 盒子 运行 SELinux 后遇到了同样的问题。我可以从命令行连接到我的远程 MySQL 数据库服务器,但 Drupal(和测试 PHP 脚本)不能。
原来是 SELinux 安全策略的问题。
默认情况下,策略 httpd_can_network_connect_db 被禁用(意味着您的网络服务器 无法 联系远程数据库。)
通过以下方式检查:
getsebool -a | grep httpd
如果 httpd_can_network_connect_db 关闭,通过以下方式启用它:
setsebool -P httpd_can_network_connect_db 1
(-P 标志使更改永久生效,因此设置在重新启动后仍然存在。)
我正在尝试使用以下脚本连接数据库(cxn-test.php)
<?php
$host = '155.30.136.20';//dummy ip
$user = 'abc_user';
$pass = 'xxxxxxxxx';
$dbname = 'welcome';
$link = mysqli_connect($host, $user, $pass,$dbname);
if (!$link) {
echo "Error: Unable to connect to MySQL." . PHP_EOL;
echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
exit;
}else {
echo "success" . PHP_EOL;
}
当我在终端上尝试时
php cxn-test.php //success
但是当我在本地主机上尝试时,出现以下错误,
curl -s http://localhost/cxn-test.php
Error: Unable to connect to MySQL.
Debugging errno: 2002
Debugging error: Permission denied
这是一个奇怪的问题,它在本地主机上不起作用,但在命令行上运行良好。
我在获得新的 CentOS 7 盒子 运行 SELinux 后遇到了同样的问题。我可以从命令行连接到我的远程 MySQL 数据库服务器,但 Drupal(和测试 PHP 脚本)不能。
原来是 SELinux 安全策略的问题。
默认情况下,策略 httpd_can_network_connect_db 被禁用(意味着您的网络服务器 无法 联系远程数据库。)
通过以下方式检查:
getsebool -a | grep httpd
如果 httpd_can_network_connect_db 关闭,通过以下方式启用它:
setsebool -P httpd_can_network_connect_db 1
(-P 标志使更改永久生效,因此设置在重新启动后仍然存在。)