如果你的mysql是用过docker创建的,但是你的密码你忘记了那么下面这篇文章将会帮你重置密码。
一、通过命令查看运行在docker中的mysql容器
docker ps | grep mysql
#如果没有启动的话用下面命令将镜像启动起来
docker start imageID
命令执行结果如下图,其中【3f115493edfd】是mysq的容器id
二、通过容器id进入容器内
docker exec -it 3f115493edfd /bin/bash
进入容器后长这个样子:
三、用vim编辑mysql配置文件(由于mysql镜像中默认没有安装vi或vim,需要先更新apt然后再安装vim,其实在这里的mysql容器就相当与一个独立的操作)
PS: docker容器实际上就是运行的一个进程,只不过由于docker帮助我们包装了这个进程,给这个进程加以一个可运行的微linux环境而已,让我们感觉看起来"像"虚拟机而已,所以说一个新的环境是没有安装vim的需要自己安装才能编辑文件。
#更新apt命令
apt-get update
#安装vim命令
apt-get install vim
执行结果如下图:(因为我已经更新并且安装过了,所以显示的内容会和没有更新安装过的xd是不太一样的)
接下来就开始编辑mysql的配置文件,执行下面命令进行编辑
vim /etc/mysql/conf.d/docker.cnf
# 在mysql配置文件中添加:skip-grant-tables
该配置并不是开始时就存在的,因为我用过了所以注释掉了
四、退出容器并重启容器
#容器内输入命令exit退出
exit
#重启容器
docker restart 3f115493edfd
五、重新后进入mysql容器,登录mysql
#进入容器
docker exec -it 3f115493edfd /bin/bash
#进入mysql
mysql -u root -p
#输入密码,因为设置了跳过验证所以这里不用输入密码直接回车enter即可
Enter password:
#进入mysql数据库
use mysql;
#更改加密方式
update user set plugin='mysql_native_password' where user='root';
#设置密码
alter user 'root'@'localhost' IDENTIFIED BY '123456';
#刷新权限表
flush PRIVILEGES;
#退出数据库
exit
六、注释或删除刚才在mysql中的配置文件添加的语句
vim /etc/mysql/conf.d/docker.cnf
# skip-grant-table
七、在docker中重启mysql容器即可
docker restart 3f115493edfd