6

我刚刚安装了我的开发环境。

当我尝试通过 SequelPro 连接 mysql db 时,我得到:

Authentication plugin 'caching_sha2_password' cannot be loaded

如中所述:无法加载身份验证插件'caching_sha2_password',我运行:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';

然后我可以通过 SequelPro 连接我的数据库

但是当我执行 Laravel 命令时:

php artisan migrate

我得到:

PDOException::("PDO::__construct(): Unexpected server respose while doing caching_sha2 auth: 109")

我现在该怎么办 ?

PD:我在 Mac 上使用 Laravel Valet 和 Laravel 5.6。

4

3 回答 3

8

您必须使用 mysql 命令通过 shell 更改 laravel 应用程序中的使用

ALTER USER 'user'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'your password';
ALTER USER 'user'@'%' IDENTIFIED WITH caching_sha2_password BY 'your password';
于 2018-12-22T17:19:53.580 回答
3

这个问题对安全有好处,mybe。

但我使用命令解决问题:

  1. ALTER USER root@ localhostIDENTIFIED WITH caching_sha2_password BY 'password';
  2. 重启mysql
  3. 现在试试

希望您不会再看到此错误。

于 2019-06-12T09:57:16.897 回答
0

使用$ mysql -uUser -pPa$$w0rdMySQL 连接后,可以使用 PHPmysqli_real_connect()或 PDO打开

确保用户缓存 sha2 密码处于活动状态,而不是本机密码。(PHP 7.2.9-1,MySQL 8.0.12)

当更改为本机密码 PHP 说

mysqli::real_connect(): 执行缓存 sha2 身份验证时出现意外的服务器响应:109

在缓存 sha2 密码处于活动状态时,我总是得到:

mysqli::real_connect(): (HY000/1045): Access denied for user 'User'@'localhost' (使用密码: YES)

所以尝试使用 Shell 从 Shell 登录$ mysql,它成功了,在此之后,我能够连接 PHP。似乎是 PHP mysqlnd 中的一个错误。

在打开 MySQL 连接之前实现一个shell_exec('mysql -u'.$user.' -p"'.$password.'" -e quit > /dev/null 2>&1');权利,现在对我来说解决了这个问题。

重启或重启 MySQL 服务,重置缓存的密码,拒绝访问消息将再次弹出。

希望这可以帮助。

问候

于 2018-09-01T20:56:52.667 回答