2012-08-09 64 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

检查您的登录名或密码是否有多余的空格。我刚刚遇到了同样的问题,它是由密码开头处的额外空间引起的。

相关问题