系统mysql版本原为5.6,mysql8.0.13后,出现phpmyadmin无法登陆问题,如下图:
经过查阅相关资料,发现原因是在MySQL 8.0+中,默认身份验证插件已从'mysql_native_password'更改为'caching_sha2_password','root'@'localhost'管理帐户默认使用'caching_sha2_password'身份验证插件。
要恢复MySQL 8.0之前的兼容性,您可以重新配置服务器以恢复到以前的默认身份验证插件mysql_native_password,解决方法如下
使用无密码登陆mysql
先停掉mysql服务,命令行进入mysql安装目录的bin目录下,运行
mysqld –skip-grant-tables
此方法是以--skip-grant-tables参数启动mysql服务,该参数指示在启动时不加载授权表,因此启动成功后root用户可以空密码登陆,但是,实测mysqld –skip-grant-tables这样的命令行,在mysql8中无法成功启动
经过在网上一番搜索后,在mysql8系统下,用mysqld --console --skip-grant-tables --shared-memory可以无密码启动服务
mysqld --console --skip-grant-tables --shared-memory
新建命令行窗口,使用无密码登陆mysql
mysql -u root
进入mysql数据库
use mysql;
更改默认身份验证方式及修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
可是报错了,
继续网上寻找解决办法:
关掉新主库的只读属性
set global read_only=0;
刷新权限
flush privileges;
重新更改默认身份验证方式及修改密码,成功了
刷新权限
flush privileges;
重新启动mysql,发现依然无法登录,经查阅相关文档发现,PHP 7.1.4之前的PHP版本和PHP 7.2之前的版本使用PHP MySQL扩展时,即使未使用caching_sha2_password,也无法与default_authentication_plugin = caching_sha2_password连接。
要恢复MySQL 8.0之前的兼容性,您可以重新配置服务器以恢复到以前的默认身份验证插件mysql_native_password!
打开mysql安装目录下的my.ini文件,增加以下一行
default_authentication_plugin=mysql_native_password
保存,重启mysql服务,链接成功!
参考文档:
http://www.xtjx.net/index.php?m=content&c=index&a=show&catid=35&id=860
https://blog.csdn.net/gupao123456/article/details/80766154
https://www.jb51.net/article/119654.htm
https://blog.csdn.net/qq_28347599/article/details/80331484