2011-09-08 47 views
2

我創建了用戶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。這樣看來,是不是這樣?

+0

您只定義了'dashboard @ localhost'的用戶訪問權限,您還需要授予用戶對'dashboard @ phpcomputer'的訪問權限,並使用這些憑據登錄。 – Johan

+0

嗨@Johan,感謝您的回覆,但不是,它沒有設置爲localhost。我最初爲用戶創建了一個'dashboard @ webserver',現在已將其更改爲'[email protected]。%。%'(它應該允許我們專用網絡上的任何機器以該用戶的身份連接,對吧?)。 – jacob

+0

檢查 - 1. mysql正在監聽端口或者socket? 2.向我們顯示此用戶的權限3. 192.168.x.x是本地網絡 – ajreal

回答

2

密碼包含一個保留字符,所以在PHP中它需要用單引號括起來而不是雙引號。

+0

什麼是「保留字符」? –

+0

語言用於特定目的的特殊字符,例如@來標識數組或#以標識哈希(以perl爲單位) – jacob

0

你運行

GRANT ALL PRIVILEGES ON mydb.* TO 'username'@'%' 

或一樣的,但@「localhost」的?

+0

hi @ user410932,我曾試過。看起來我已經知道了(請參閱上面的答案) – jacob