Docker中mysql忘记/重置密码

思路

  1. 进入mysql容器
  2. 增加忘记密码模式
  3. 修改密码
  4. 删除忘记密码启动模式
  5. 重启容器镜像即可

操作

  1. 通过docker exec命令进入容器内
docker exec -it [容器名] /bin/sh

2. 编辑mysql配置文件,增加“忘记密码启动”模式:

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

最终配置文件docker.cnf内容如下:

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

3. 修改密码

# 登入mysql
mysql

# 切换数据库
use mysql;

# 更改密码
update user set authentication_string=password("新密码") where user="root";

# 刷新
flush privileges;

# 退出
quit;

4. 删除忘记密码启动模式

vi /etc/mysql/conf.d/docker.cnf

# 删除掉 `skip-grant-tables` 并保存

5. 重启mysql docker实例

docker restart [容器名]

Tips

有时候由于更改配置文件,导致mysql报错无法启动容器,可以按一下步骤解决:

  1. 查看配置目录
docker inspect [容器名]

找到其中MergedDir项,使用cd到该值的上一层目录,找到diff/etc/mysql/mysql.cnf然后修改,最后重启容器即可。

comments powered by Disqus