SQLSTATE[HY000] [1045] 用户 'username'@'localhost' 的访问被拒绝(使用密码:YES)

SQLSTATE[HY000] [1045] Access denied for user 'username'@'localhost' (using password: YES)

在我的 Ubuntu VM 中,我不断收到

SQLSTATE[HY000] [1045] Access denied for user 'username'@'localhost' (using password: YES)


更新

我在我的 .env 文件中这样配置了我的数据库

DB_HOST=45.55.88.57
DB_DATABASE=b-prod
DB_USERNAME=root
DB_PASSWORD=*********
UNIX_SOCKET=/var/run/mysqld/mysqld.sock

它完美运行。


但是当我使用

DB_HOST=45.55.88.57
DB_DATABASE=b-prod
DB_USERNAME=b <----------------------------------------------
DB_PASSWORD=*********
UNIX_SOCKET=/var/run/mysqld/mysqld.sock

我没有工作。

我还应该注意什么来防止这种情况发生?


感觉密码不对

如何测试我的数据库密码? DB_PASSWORD=********* ?


这是我所有的用户

mysql> SELECT User,Host FROM mysql.user;
+------------------+-------------+
| User             | Host        |
+------------------+-------------+
| root             | %           |
| root             | 127.0.0.1   |
| root             | 45.55.88.57 |
| root             | ::1         |
| root             | b       |
| b            | localhost   |
| debian-sys-maint | localhost   |
| root             | localhost   |
+------------------+-------------+
8 rows in set (0.00 sec)

解决方法:

有时,当您更改 .env 时,如果不清除缓存或重新启动服务器,配置不会刷新。

错误信息是:

SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: YES)

数据库正在尝试从 "cached" .env 配置中获取信息,您应该尝试:

php artisan config:clear

如果没有解决,重启你的服务器。

[编辑] 另一个不推荐选项:

  • 转到您的 config\database.php
  • 删除 .env 配置

并设置您自己的凭据

'mysql' => [
            'host' => '45.55.88.77',
            'database' => 'prod',
            'username' => 'forge',
            'password' => '*********',
        ],

此文件正在缓存一些数据,例如数据库配置 \bootstrap\cache\config.php。要么删除它,要么用新数据更新它。

我认为你的问题出在你的数据库上,而不是laravel。

mysql> SELECT User,Host FROM mysql.user;
+------------------+-------------+
| User             | Host        |
+------------------+-------------+
| root             | %           |
| root             | 127.0.0.1   |
| root             | 45.55.88.57 |
| root             | ::1         |
| root             | b           |
| b                | localhost   | <-- must be % not localhost coz you want to access it remotely not locally
| debian-sys-maint | localhost   |
| root             | localhost   |
+------------------+-------------+
8 rows in set (0.00 sec)

希望这对您有所帮助。

如果使用 wamp,请检查数据库端口,登录 phpmyadmin 并查看页面顶部的服务器:MySQL

我遇到了同样的问题,试图在我的本地主机上安装 Matomo。我以为这是我的 MySQL 配置,但它似乎是我浏览器 (Opera) 中的广告拦截器和广告跟踪器插件。一旦停用,它工作正常。 我希望我能帮助... 祝你好运!

我也遇到了这个问题。当我们在 .env 文件中使用字符串的复杂字符时,ENV 变量应该用双引号引起来。例如密码、秘密、密钥等。

DB_PASSWORD="FDXSCHVBGFFUOVIDVKTFUVIF++++++****"

请先检查这个场景。

谢谢..