天天看点

docker基于mysql镜像构建mysql容器忘记密码解决办法

环境:

[root@master-106 ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
[root@master-106 ~]# docker --version
Docker version 19.03.13, build 4484c46d9d
MySQL 5.7.31           

进入mysql容器:

[root@master-106 ~]# docker ps|grep mysql
05759803adb9        mysql:5.7           "docker-entrypoint.s…"   6 weeks ago         Up 4 minutes        3306/tcp, 33060/tcp                        wordpress_db_1

[root@master-106 ~]# docker exec -it 05759803adb9 /bin/bash           

更新apt:

apt-get update
# 安装vim, 默认mysql镜像中没有安装vi或vim
apt-get install vim           

编辑mysql配置文件:

root@05759803adb9:/# vim /etc/mysql/conf.d/docker.cnf
# 添加如下一行
skip-grant-tables           

重启数据库:

service mysql restart           

重新进入容器,登录mysql:

[root@master-106 ~]# docker exec -it 05759803adb9 /bin/bash
root@05759803adb9:/# mysql -uroot -p
Enter password:   # 直接回车

mysql> use mysql;
# mysql 5.7之前版本
update user set authentication_string=password('新密码') where user="root";
# mysql 5.7之后版本
update user set authentication_string=password('新密码') where user="root";
# 退出数据库
mysql> exit           

删除刚才在配置文件中添加的一行

# /etc/mysql/conf.d/docker.cnf 
skip-grant-tables           

重启数据库

service mysql restart           

重新进入容器,登录mysql使用新密码验证

[root@master-106 ~]# docker exec -it 05759803adb9 /bin/bash
root@05759803adb9:/# mysql -uroot -p123456
# 结果是ok的.