在MySQL 8.0及以上版本中,caching_sha2_password是默认的身份验证插件,这种插件在密码传输过程中不会将密码以明文形式展示出来,限制远程连接,因此更加安全。然而,如果你需要修改caching_sha2_password的密码,可能需要一些额外的步骤。
以下是一种可能的解决方案:
使用root用户进入容器修改
##不用root修改的密码可能无法保存
docker exec -it --user=root 容器ID /bin/sh
vi /etc/my.cnf
如果无法使用vi
本地编辑my.cnf,替换容器内my.cnf
docker cp my.cnf mysql8:/etc/my.cnf
[mysqld]后追加default-authentication-plugin=mysql_native_password
Mysql8容器内的my.cnf配置
[mysqld]
default-authentication-plugin=mysql_native_password
首先,使用管理员权限的终端登录到MySQL。
检查当前的用户身份验证方式,可以通过以下命令查看:
SELECT host, user, plugin, authentication_string FROM mysql.user;
如果返回结果中的authentication_string列包含caching_sha2_password,
那么你需要进行后续操作(caching_sha2_password改为mysql_native_password)。
修改密码,可以使用以下命令:
ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'new_password';
其中,username是你的用户名,new_password是你想要设置的新密码。
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'jason#2023';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'reborn#2023';
刷新权限,可以使用以下命令:
FLUSH PRIVILEGES;
这将更新所有用户的权限,使新的密码生效。
docker stop mysql8容器
docker start mysql8容器
本地:使用新密码登录。('root'@'localhost'的密码)
远程:使用新密码登录。('root'@'%'的密码)
以上步骤应该能帮助你成功修改caching_sha2_password的密码。