Docker中修改mysql8默认机密方式

文章介绍了如何在Docker环境下更改MySQL8的默认加密插件为mysql_native_password,提供了三种方法:启动前挂载修改后的配置文件、启动命令添加参数以及启动后使用SQL修改。这些方法有助于解决因加密插件升级导致的连接问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker中修改mysql8默认机密方式

        使用过mysql8的应该都知道,升级后的mysql加密方式由之前的“mysql_native_password”改成了“caching_sha2_password”,但是由于我们一些工具或者驱动包没有升级,导致无法连接,那么就需要修改mysql8默认的加密方式。
        这里使用docker的方式启动mysql8修改默认加密方式,直接安装mysql8修改类似。这里大概有这么几种方式:docker启动命令中添加额外参数、mysql启动后使用sql修改、启动前挂载修改好的配置文件…

方法一

        启动前挂载修改好的配置文件,这里需要注意一下,一定要在docker容器启动之前,下载一份对应版本的my.cnf修改好,启动时进行挂载。如果是启动后然后修改配置文件然后重启docker容器是不生效的。
注:每个版本可能配置文件具体位置有差异,根据自己的版本来修改,我本次使用的8.0.27版本,配置文件位于“/etc/mysql”目录下
在这里插入图片描述
在这里插入图片描述
首先我们找到一份my.cnf文件,可以官网下载,也可以从别人哪里copy,这里也有一个小技巧可以获取到这个文件。你先docker run启动mysql容器,然后将容器中的配置文件copy出来,然后再把这个没用的容器销毁掉就行了。
在my.cnf文件的[mysqld]配置下添加如下配置:

default-authentication-plugin=mysql_native_password

在这里插入图片描述
修改好之后启动容器并挂载好配置文件即可:

# 相关信息修改为自己的即可
docker run -d --name mysql -p 3306:3306 -v /opt/mysql/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 mysql

启动之后然后连接进行查看:

use mysql;
select host,user,plugin from user;

在这里插入图片描述

方法二

启动容器时启动命令添加参数

# 添加如下参数
--default-authentication-plugin=mysql_native_password
# 完整命令如下
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql --default-authentication-plugin=mysql_native_password

启动后验证即可。

方法三

启动容器之后使用sql进行修改

docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

在这里插入图片描述
修改

# 进入容器
docker exec -it ******* bash
# 登陆mysql
mysql -u root -p
use mysql;
# 设置用户root密码策略为"mysql_native_password"
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'mysql';
# 刷新使之前操作立刻生效
flush privileges;

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值