MySQL + Laravel:SQLSTATE [HY000] [1045] 用户'so'@'localhost'的访问被拒绝,但连接数据正常并且配置缓存被清除

Posted

技术标签:

【中文标题】MySQL + Laravel:SQLSTATE [HY000] [1045] 用户\'so\'@\'localhost\'的访问被拒绝,但连接数据正常并且配置缓存被清除【英文标题】:MySQL+Laravel: SQLSTATE[HY000] [1045] Access denied for user 'so'@'localhost' but connection data is OK and config cache is clearedMySQL + Laravel:SQLSTATE [HY000] [1045] 用户'so'@'localhost'的访问被拒绝,但连接数据正常并且配置缓存被清除 【发布时间】:2020-09-04 17:31:03 【问题描述】:

我在这里需要帮助,因为这让我发疯。我正在尝试连接到远程生产数据库,但我无法。我已经阅读了大量关于此的帖子,这些帖子专注于凭据,并运行以下命令来清理存储在 Laravel 缓存中的配置:

 php artisan cache:clear
 php artisan config:cache
 php artisan config:clear   

Laravel 5 error SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'localhost' (using password: YES)

这些都对我有用。

我已经很好地检查了我的 .env 文件和我的 database.php 中的凭据。我可以使用 ip“127.0.0.1”连接到本地数据库,但无法使用存储在 Google Cloud 中的生产数据库。值得一提的是,允许我的本地 IP 访问该数据库,并且我可以使用 MySql Workbench 进行连接。

这是我执行“php artisan tinker”然后执行“DB::connection()->getPdo();”时看到的内容从终端检查我的连接:

唯一引起我注意的是包含 "so@localhost" 的消息,当我没有执行到 localhost 的连接时,但我不知道这是否与问题有关。

还有什么建议吗?我浪费了太多时间试图找出可能发生的事情。

编辑 1:Laravel 框架 5.8.38

【问题讨论】:

您的default 连接设置是什么? config('database.default') ? 默认是 mysql。我在 database.php 的开头声明如下:'default' => env('DB_CONNECTION', 'mysql'), 我对调试的建议(您可能已经完成了所有操作) - 尝试一一更改凭据(+ php artisan config:clear )以查看其中是否有任何更改?创建另一个连接数组 (foobar) 放置这些凭据并设置默认连接 foobar 以查看它是否有效?在您的 IDE/编辑器中搜索 localhost 并用任意字符串替换它们中的每一个,以查找在尝试打开连接时使用了哪个 localhost。在这个逐步调试过程中,每次都清除配置,以免遇到任何意外情况。 你们都在尝试修补程序吧?一些虚拟控制器方法来选择return User::first() 怎么样 - 顺便说一句,我没有想法:( 是的,我正在使用 tinker 来测试连接。我通过尝试连接 AppServiceProvider.boot() 方法做了类似的事情,结果相同:(。我大约花了 6 个小时来解决这个问题。无论如何,谢谢! 【参考方案1】:

在与这个问题斗争了两天之后,我阅读了大量的帖子和许多无用的解决方案,我通过查看 this video 找到了我的解决方案。

基本上,您必须停止 XAMPP MySQL 服务器并打开 C:\xampp\mysql\bin\my.ini 并通过添加以下命令进行编辑 "skip-grant-tables" 在 [mysqld] 属性之后。此文件中的结果可能如下所示:

# The MySQL server
default-character-set=utf8mb4
[mysqld]
skip-grant-tables
socket="C:/xampp/mysql/mysql.sock"
...

之后,我运行了“php artisan tinker”和 DB::connection()->getPdo(); 一切都重新连接了,但最好先清理缓存和配置.

【讨论】:

以上是关于MySQL + Laravel:SQLSTATE [HY000] [1045] 用户'so'@'localhost'的访问被拒绝,但连接数据正常并且配置缓存被清除的主要内容,如果未能解决你的问题,请参考以下文章

Behat,Laravel5 中的 MySql 连接错误:'PDOException''SQLSTATE[HY000] [2005] 未知的 MySQL 服务器主机'mysql'(2)'

MySQL + Laravel:SQLSTATE [HY000] [1045] 用户'so'@'localhost'的访问被拒绝,但连接数据正常并且配置缓存被清除

将 Laravel 连接到 XAMPP MySQL (MariaDB) 数据库 SQLSTATE[HY000] [2006] MySQL 服务器已消失

Laravel:SQLSTATE [HY000] [2002] 连接被拒绝

Laravel 7 SQLSTATE[HY000] [2002] 没有这样的文件或目录

SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误 - LARAVEL