首页 > 解决方案 > SQLSTATE[HY000] [1045] 用户 'root'@'localhost' 的访问被拒绝(使用密码:否)。DB_HOST 设置为 localhost

问题描述

我将 Laravel 项目从 localhost 移动到服务器。我在服务器上完成了每一步。

我可以在我的服务器上查看登录页面。问题是我无法连接到我的 MySQL 服务器。

我的.env文件:

APP_NAME=Transport
APP_ENV=local
APP_KEY=base64:mrakeyidharhaikonsdf
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=transport_db
DB_USERNAME=root
DB_PASSWORD=mypass

我尝试将主机更改为127.0.0.1并尝试输入服务器的 IP 地址。它没有帮助我。我错过了什么吗?

我的错误:

SQLSTATE[HY000] [1045] 用户'root'@'localhost'的访问被拒绝(使用密码:否)(SQL:选择计数(*)作为聚合 from userswhere email= user.email@gmail.com)

我知道这个问题在 Stack Overflow 上可能已经有了答案。但我在这里有不同的问题。

标签: phpmysqllaravellaravel-6

解决方案


老实说,在开发 Laravel 6 时,我也多次遇到这个问题,可能无法找出解决方案。我尝试了 and 之类的命令 php artisan config:cachephp artisan config:clear但这两个命令没有帮助。

要解决此问题,您必须执行以下所有命令:

php artisan route:cache
php artisan route:clear
php artisan config:cache
php artisan config:clear
php artisan optimize

注意:确保.env你有 adddb_password并且它不为空,并检查你是否db_password使用了任何特殊字符。始终将它们包含在"".

例子:

DB_PASSWORD="%123456%"

要调试此问题,您还可以创建一个测试路由,然后将.env变量转储到那里以检查它们是否具有正确的值。

Route::get('/test/env', function () {
    dd(env('DB_DATABASE')); // Dump 'db' variable value one by one
});

注意:请确保重新启动您的服务器。


推荐阅读