我創建了用戶dashboard
並授予它各種權限(如SHOW DATABASES
)。我最初設置主機= [私人IP網絡服務器],但不斷獲得訪問被拒絕從PHP的mysql_connect
返回的錯誤,所以我設置Host=192.168.%
,使我們的網絡上的任何機器可以訪問它。mysql「拒絕訪問用戶」(僅在通過php連接時發生)
我可以使用MySQLWorkbench(和成功運行SHOW DATABASES;
)成功連接到MySQL數據庫從我的Mac數據庫服務器上,但是當我嘗試通過我們的網絡服務器PHP連接,我只是得到:Access denied for user 'dashboard'@'192.168.xx.xx' (using password: YES)
我使用的PHP代碼:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<?php
$dbhost = "192.168.x.x"; // but no x's
$dbuser = "dashboard";
$dbpass = "password"; // i copied&pasted the real password for other successful logins
$dbconnect = mysql_connect($dbhost, $dbuser, $dbpass) or die(mysql_error());
$query = mysql_query('SHOW DATABASES;');
?>
</head>
<body>
<? echo $query ?>
</body>
</html>
半相關的說明:我可以以某種方式設置$dbpass
等於加密的字符串,所以它不是存儲在純文本?
編輯:MySQL的用戶當前[email protected]%
(不是localhost)
編輯2:我想因爲Web服務器是在DMZ中,它可能與MySQL進行通信,從它的公網IP,但是當我更改dashboard
的主機時,我得到了Host '192.168.xx.xx' is not allowed to connect to this MySQL server
。這樣看來,是不是這樣?
您只定義了'dashboard @ localhost'的用戶訪問權限,您還需要授予用戶對'dashboard @ phpcomputer'的訪問權限,並使用這些憑據登錄。 – Johan
嗨@Johan,感謝您的回覆,但不是,它沒有設置爲localhost。我最初爲用戶創建了一個'dashboard @ webserver',現在已將其更改爲'[email protected]。%。%'(它應該允許我們專用網絡上的任何機器以該用戶的身份連接,對吧?)。 – jacob
檢查 - 1. mysql正在監聽端口或者socket? 2.向我們顯示此用戶的權限3. 192.168.x.x是本地網絡 – ajreal