访问8.0等高版本数据库报错:Client does not support authentication protocol requested by server; consider upgrading MySQL client(客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端)
这种问题就是你访问的工具身份验证协议过于落后,如果是navicat之类的软件可以考虑升级,如果是在squelize之类的程序里边的话也可以考虑换高版本的程序包。如果实在找不到高版本的程序包也不要怕可以用下面的方法去解决。
1.输入命令修改相关机密方法
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;这里的password是你正在使用的密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';#更新一下用户的密码这里的password为你修改的新密码。
FLUSH PRIVILEGES; #刷新权限,使自己的修改生效。
这时还是连接不上,然后通过telnet3306数据库对应的接口,出现了8.0.11;S"3<VN,.Y\k4Ycaching_sha2_password这个信息,是修改没有生效还是其他原因?重启容器之后还是不行。
然后use mysql;
查询表中的相关信息 select user,host,plugin from user where user='root';
这时发现了问题,原理刚刚修改的是localhost,对于非本机的连接密码校验规则还是没有变。
alter user 'root'@'%' identified by 'password' password expire never;
alter user 'root'@'%' identified with mysql_native_password by 'password';//password是自己新修改的密码。
flush privileges;再次刷新一下权限配置。
修改好了,再访问数据库成功。
本文来自博客园,作者:hauner,转载请注明原文链接:https://www.cnblogs.com/hauner/p/14142390.html