2012-08-09 62 views
1

我正在將我的網站從小型VPS移動到大型專用服務器。但這是一個奇怪的問題。CakePHP數據庫:SQLSTATE 28000 - 錯誤1045拒絕訪問用戶'kcal'@'localhost'

我不斷收到此錯誤:

 
Missing Database Connection 

Error: SQLSTATE[28000] [1045] Access denied for user 'kcal'@'localhost' (using password: YES) requires a database connection 

Error: Confirm you have created the file : app/Config/database.php. 

Notice: If you want to customize this error message, create app/View/Errors/missing_connection.ctp. 

是:文件被創建,用戶已經做出,密碼是正確的。 (我甚至改變了它簡單的兩次)

但我仍然得到這個錯誤。

我讀過我需要pdo_mysql擴展名,但是這是默認安裝的。我有它,它已安裝並啓用!

我所有的其他應用程序工作正常。不過,這是唯一的CakePHP。

+0

查看'show grants for kcal @ localhost' - 並記住mysql認爲來自tcp連接的登錄名是與通過本地unix域套接字進入的帳戶不同的帳戶。 – 2012-08-09 17:51:16

+0

您是否試過'127.0.0.1'而不是'localhost'? – jeremyharris 2012-08-09 18:03:04

回答

3

訪問被拒絕錯誤表明正是 - 蛋糕是談得來的MySQL,和它說訪問被拒絕與用戶@主機指示。可能是因爲用戶無法訪問checkpoint_live數據庫。

由於您剛搬到新服務器,您可能需要爲該特定用戶@主機在MySQL表上授予權限。使用相同的密碼創建相同的用戶是不夠的。試試這個:

GRANT ALL PRIVILEGES ON checkpoint_live.* TO 'kcal'@'localhost'; 
FLUSH PRIVILEGES; 
+2

應該指出「GRANT ALL」會給這個用戶每一個可以想象的權限給這個數據庫,包括像SHUTDOWN/EXECUTE/CREATE USER /等等。最佳實踐表明,您應該只授予您實際需要的權限。 – elliot 2012-12-17 19:56:55

+0

我可以在哪裏使用或執行上面的陳述? – Samphors 2016-09-19 06:45:04

+1

這是一個MySQL查詢。 MySQL控制檯,Sequel Pro或PHPMyAdmin都可以工作 – elliot 2016-09-21 00:00:45

0

檢查您在app/Config/database.php中輸入的用戶名密碼。 它應該是這樣的:

class DATABASE_CONFIG { 

public $default = array(
    'datasource' => 'Database/Mysql', 
    'persistent' => false, 
    'host' => '127.0.0.1', 
    'login' => 'kcal', 
    'password' => '---ORIGINIAL PASSWORD HERE---', 
    'database' => 'checkpoint_live', 
    'prefix' => '', 
    'encoding' => 'utf8', 
); 
} 
0

檢查您的登錄名或密碼是否有多餘的空格。我剛剛遇到了同樣的問題,它是由密碼開頭處的額外空間引起的。

相關問題