Mysql忘记密码:强制更改Docker容器中的Mysql密码

查看docker中正在运行的容器
docker ps

在这里插入图片描述

进入MySQL 容器中

sudo docker exec -it 321459c00aa0 /bin/bash

在容器中: /etc/mysql/conf.d/  下有 docker.cnf 文件

在 docker.cnf 文件中追加  skip-grant-tables

Mysql忘记密码:强制更改Docker容器中的Mysql密码_第1张图片

操作命令如下:
下载容器中的docker.cnf 文件 到宿主主机中

docker cp 321459c00aa0:/etc/mysql/conf.d/docker.cnf /home/

编辑下载的文件追加 skip-grant-tables;

[mysqld]
skip-host-cache
skip-name-resolve
skip-grant-tables

Mysql忘记密码:强制更改Docker容器中的Mysql密码_第2张图片
Mysql忘记密码:强制更改Docker容器中的Mysql密码_第3张图片

把编辑好的文件重新上传到MySQL容器中

docker cp /home/docker.cnf 321459c00aa0:/etc/mysql/conf.d/

重新启动MySQL 容器

docker restart 321459c00aa0

进入MySQL容器中

sudo docker exec -it 321459c00aa0 /bin/bash

Mysql忘记密码:强制更改Docker容器中的Mysql密码_第4张图片

密码可不用输入直接回车跳过
接下开就是修改么MySQL 密码的操作了

mysql>  set password for root@localhost = password('123');  

# 刷新权限
mysql>  flush privileges;

# 退出
mysql> quit


如果采用上面的方法修改密码;连接时报错: Access denied for user 'root'@'182.119.227.139' (using password: YES)

那么就采用这种方式修改密码:

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql>  UPDATE user SET authentication_string=PASSWORD('123') where USER='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 2  Changed: 1  Warnings: 1

mysql> flush privileges;

最后把在 docker.cnf 文件中追加的 : skip-grant-tables 删除
重启 MySQL容器

你可能感兴趣的:(MySQL,Docker)