SQL:从用户中选择*:SQLSTATE [HY000] [1045]用户'root'@'localhost'的访问被拒绝使用密码:是

问题描述

在Laravel中,在使用本机查询时,我正在使用以下代码

$users = DB::select('select * from users');
return $users;

但是,出现以下错误

sqlSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) (sql: select * from users)

我的.env文件是这样的:

DB_CONNECTION=MysqL
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db_seven
DB_USERNAME=root
DB_PASSWORD=

你能帮我吗?

解决方法

如我的评论中所述:将密码放在DB_PASSWORD=后面或将其设置为DB_PASSWORD=null

说明:

在您发布的错误中,消息包含“正在使用密码:是”,这表示已使用密码。根据您的.env文件,没有密码。但是在这种情况下,laravels env()函数会返回一个空字符串。

该空字符串用作密码,不是您想要的。您必须获得env('DB_PASSWORD')才能返回null进行身份验证,而无需输入密码。

可以通过写入DB_PASSWORD=null或删除该行来对其进行存档。但是将其写出来可以防止将来您和其他人认为它已被忘记。

,

您的数据库服务器如何托管?通常,此错误与远程根目录的未授权有关。

例如,此命令:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';

然后,重新启动Mysql服务

service mysql restart