SQLSTATE[HY000] [1045] 用户“root”@“localhost”的访问被拒绝(使用密码:NO)。DB_HOST设置为本地主机

2022-08-31 00:08:01

我将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

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

我的错误:

SQLSTATE[HY000] [1045] 用户“root'@'localhost”的访问被拒绝(使用密码:NO)(SQL:选择 count(*) 作为聚合,从哪里 = user.email@gmail.com)usersemail

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


答案 1

老实说,在制作Laravel 6时,我也多次遇到这个问题,可能无法找出解决方案。我尝试了像 和 这样的命令,但这两个命令没有帮助。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

注意:请确保您有add并且它不是空的,并且还要检查您是否使用任何特殊字符。始终将它们括在 ..envdb_passworddb_password""

例:

DB_PASSWORD="%123456%"

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

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

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


答案 2

确保您的数据库凭据和数据库主机设置正确:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE="your_database_name"
DB_USERNAME="put_db_user_name _here"
DB_PASSWORD="put_db_password_here_if_have_set"

如果尚未设置任何数据库密码,请添加:

DB_PASSWORD=""

推荐