Docker修改mysql8容器密码,解决caching_sha2_password远程连接问题

问题原因:

在MySQL 8.0及以上版本中,caching_sha2_password是默认的身份验证插件,这种插件在密码传输过程中不会将密码以明文形式展示出来,限制远程连接,因此更加安全。然而,如果你需要修改caching_sha2_password的密码,可能需要一些额外的步骤。

以下是一种可能的解决方案:

修改mysql8容器my.cnf

使用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修改密码

首先,使用管理员权限的终端登录到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的密码。