pdoexception::(“pdo::uu construct():缓存时意外的服务器响应\u sha2 auth:109”)使用mysql 8/php 7.2/laravel

huus2vyu  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(392)

我刚安装了我的开发环境。
当我尝试通过sequelpro连接mysql db时,我得到:

Authentication plugin 'caching_sha2_password' cannot be loaded

如中所述:无法加载身份验证插件“caching\u sha2\u password”,我运行了:

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

然后我可以通过sequelpro连接数据库
但当我执行拉威尔命令时:

php artisan migrate

我得到:

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

我现在该怎么办?
警局:我在mac上用的是LaravelValet和Laravel5.6。

7lrncoxx

7lrncoxx1#

你必须通过shell和mysql命令来改变你在laravel应用程序中的用法

ALTER USER 'user'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'your password';
ALTER USER 'user'@'%' IDENTIFIED WITH caching_sha2_password BY 'your password';
nsc4cvqm

nsc4cvqm2#

使用后 $ mysql -uUser -pPa$$w0rd mysql连接可以使用php打开 mysqli_real_connect() 或pdo
确保用户激活了缓存sha2密码,而不是本机密码(php 7.2.9-1、mysql 8.0.12)
当更改为本机密码时,php说
mysqli::real\u connect():缓存时出现意外的服务器响应\u sha2 auth:109
在激活sha2密码的情况下,我总是得到:
mysqli::real_connect():(hy000/1045):拒绝用户'user'@'localhost'的访问(使用密码:yes)
所以尝试使用 $ mysql ,它成功了,在这之后,我能够连接到php。似乎是php mysqlnd中的一个bug。
实施 shell_exec('mysql -u'.$user.' -p"'.$password.'" -e quit > /dev/null 2>&1'); 在打开mysql连接之前,我已经解决了这个问题。
重新启动或重新启动mysql服务,重置缓存密码,拒绝访问消息将再次弹出。
希望这有帮助。
问候语

7ajki6be

7ajki6be3#

这个问题有利于安全,麦贝。
但我用这个命令来解决问题:
更改用户 root @ localhost 通过“password”标识为缓存_sha2_密码;
重启mysql
现在试试
希望您不再看到此错误。

相关问题