2016-12-16 61 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

相關問題