2014-05-16 84 views
0

我創建了一個名爲database_test的數據庫&我有一個名爲john的用戶和一個密碼hello123。這全是來自主機HOST從PHP連接到MySQL的問題

<?php 
// Create connection 
$host = "HOST"; // THIS HOST IS CORRECT. I'M JUST HIDING IT FROM GENERAL PUBLIC. 
$user = "john"; 
$password = "hello123"; 
$database = "database_test"; 

$con=mysqli_connect($host,$user,$password,$database); 

// Check connection 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
?> 

但是,我得到錯誤:

Failed to connect to MySQL: Access denied for user 'john'@'HOST' (using password: YES)

我已經設置了用戶「約翰」的權限,如下圖所示...

enter image description here

爲什麼我我得到這個錯誤?我有主機正確,用戶名和密碼正確,但它說這個用戶沒有權限

回答

0

除了localhost127.0.0.1之外的主機名是什麼?如果是這樣,那麼這是一個防火牆問題。

要檢查主機是否可以遠程使用,您可以使用mmapnmap是一種常用的網絡實用程序,在Linux機器或Mac OS X機器上默認不安裝,但可以通過命令行輕鬆安裝&。

只需從服務器運行nmap要用於連接到遠程主機的代碼駐留像這樣:

nmap [hostname or IP address] -p 3306 

端口3306是MySQL端口和輸出,如果該端口是開放的會:

Starting Nmap 5.21 (http://nmap.org) at 2014-05-16 18:56 EDT 
Nmap scan report for localhost (127.0.0.1) 
Host is up (0.00013s latency). 
PORT  STATE SERVICE 
3306/tcp open mysql 

Nmap done: 1 IP address (1 host up) scanned in 0.40 seconds 

但如果它是封閉的,那就是:

Starting Nmap 6.25 (http://nmap.org) at 2014-05-16 18:57 EDT 
Nmap scan report for localhost (127.0.0.1) 
Host is up (0.000096s latency). 
PORT  STATE SERVICE 
3306/tcp closed mysql 

Nmap done: 1 IP address (1 host up) scanned in 0.17 seconds 

此外,還可以通過運行這個命令來檢查GRANTS用戶john具有MySQL數據庫服務器本身:

SHOW GRANTS FOR 'john'@'127.0.0.1'; 

或者這樣用localhost,而不是IP地址;

SHOW GRANTS FOR 'john'@'localhost'; 

雖然你的屏幕截圖顯示你已經授予了權限,但你需要確保他們確實擁有了權限。在MySQL中,你通過設置GRANT,然後運行,FLUSH PRIVILEGES;

既往認爲,我所看到的是一些MySQL的設置不考慮127.0.0.1localhost是相同的,即使他們做到這一點。所以我建議將主機名更改爲127.0.0.1localhost,看看會發生什麼。

+1

主機名是一個像127.0.0的IP地址。1 – user3557909

+0

@ user3557909太棒了!現在看看我編輯的答案。嘗試使用'localhost'而不是'127.0.0.1'並檢查用戶授權。 – JakeGould

-1

你需要的權限從主機添加到您的用戶:主機,執行這些查詢:

GRANT USAGE ON database_test.* TO 'john'@'HOST' IDENTIIFIED BY 'hello123'; 
GRANT ALL PRIVILEGES ON database_test.* TO 'john'@'HOST' IDENTIFIED BY 'hello123'; 
FLUSH PRIVILEGES; 

PS:我授予的所有特權,因爲您的文章顯示,約翰可以擁有一切特權,否則你可以添加他們一個一個,如果需要的話。

+0

他們添加了屏幕截圖所示的贈款。 – JakeGould

+0

是的,但不是來自我認爲是主機的正確主機。 –

+0

是的,我不知道'HOST'是'localhost',這就是爲什麼我建議使用'nmap'以及爲用戶檢查'GRANTS'的原因。 – JakeGould