USE mysql;
UPDATE user SET plugin='caching_sha2_password', authentication_string='' WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;
注意:我们这里是直接修改root的认证模式,然后authentication_string='' 设置的是一个空的字符串密码,这里不可以直接指定你的root密码,因为是明文的,mysql不允许,也不接受,所以就先保留空,等后面进入到正常模式再去修改
8、将mysql设置成正常模式
如果是docker-compose启动的,把command: --skip-grant-tables这一行推荐注释掉(万一以后还要出现直接打开即可)
然后docker-compose down && docker-compose up -d
宿主机安装的情况下,直接ps aux | grep "mysqld_safe --skip-grant-tables"
把这个进程给kill掉,
然后systemctl start mysql正常启动即可
假设root用户已经登录进来了,说明root用户的认证模式已经改回来了
接下来我们在查看一下其他用户的认证情况
USE mysql;
SELECT User, Host, plugin FROM user;
根据结果提示,把mysql_native_password的用户都改成caching_sha2_password
这里的修改认证类型主要是通过修改该用户的密码,然后再重新指定认证类型
但是在修改之前,最好将该用户的密码修改成和之前一样的,这样可以减少很多不必要的麻烦,当然你也可以使用新的自定义密码
#假如我现在需要将javatest这个用户的认证类型从原来的mysql_native_password改成caching_sha2_password,使用如下SQL语句即可,但是修改之前要看一下该用户之前授权的远程IP地址是什么,要严格的对应上,我这里是%,你们根据实际情况修改
ALTER USER 'javatest'@'%' IDENTIFIED WITH 'caching_sha2_password' BY '该用户的新密码';
#刷新权限
FLUSH PRIVILEGES;