2016-12-16 59 views
2

我试图连接与下面的脚本数据库(CXN-test.php的)连接数据库错误类型:2002:权限被拒绝

<?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的//成功

但是,当我试图在本地主机上我收到以下错误,

卷曲-s http://localhost/cxn-test.php

Error: Unable to connect to MySQL. Debugging errno: 2002 Debugging error: Permission denied

这是奇怪的问题它不工作在本地主机,但工作的命令行良好。

+0

数据库位于何处?它在Docker容器中吗?你尝试过'mysqli'或PDO mysql吗? – harryparkdotio

+0

它位于另一台服务器中,当通过命令行访问它时,它使用ip – Sundar

+0

进行远程连接,您是ssh进入远程服务器,还是与运行本地主机的计算机相同? – harryparkdotio

回答

7

我在运行SELinux的新CentOS 7盒子后遇到同样的问题。我可以从命令行连接到远程MySQL数据库服务器,但Drupal(和测试PHP脚本)不能。

问题原来是SELinux安全策略。

默认情况下,该政策httpd_can_network_connect_db被禁用(也就是说你的Web服务器不能接触远程DB)

入住此通过:

getsebool -a | grep httpd

如果httpd_can_network_connect_db是关,启用它:

setsebool -P httpd_can_network_connect_db 1 

(-P标志使更改永久,因此设置在重新启动后仍然存在。)

+1

不错,+1不告诉人们关闭SELinux! – miken32

+0

我有同样的问题,只有通过禁用SELinux才能得到解决。感谢您对突出显示的评论 – ankit9j

相关问题