天使漫步IT工作室

laravel中出现SQLSTATE[HY000] [1045] Access denied for user解决办法


一、bug现场

今天部署laravel,在config中database.php配置后,运行发现并不生效。

开启debug模式后发现异常:

Illuminate \ Database \ QueryException (1045)
SQLSTATE[HY000] [1045] Access denied for user 'xxx'@'localhost' (using password: YES) (SQL: select * from `content` order by RAND() limit 1)

刚开始怀疑mysql的语句有问题,但是通过client端运营并没有发现问题排除mysql语法的问题。回到错误信息,我们发现是access denied for user xxx@localhost,然而xxx的用户并不存在。

可是仔细检查database.php后我们发现数据并没有配置错。

二、翻开laravel手册

发现配置上线的数据库的信息有一部分放到了隐藏文件".env",熟悉英文的同学应该发现这就是环境(environment)的缩写,证明laravel框架会默认加载这个配置文件。

这个文件在laravel的根目录下,用vim打开后发现确实有数据库配置项。

把mysql的信息填入后,运行发现OK。

这里需要注意的是,用户名密码错误都会报以上的错误,要多测试定位问题所在。

当前页面是本站的「Baidu MIP」版。查看和发表评论请点击:完整版 »