我刚安装了我的开发环境。
当我尝试通过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。
3条答案
按热度按时间7lrncoxx1#
你必须通过shell和mysql命令来改变你在laravel应用程序中的用法
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服务,重置缓存密码,拒绝访问消息将再次弹出。
希望这有帮助。
问候语
7ajki6be3#
这个问题有利于安全,麦贝。
但我用这个命令来解决问题:
更改用户
root
@localhost
通过“password”标识为缓存_sha2_密码;重启mysql
现在试试
希望您不再看到此错误。