如何重置忘记密码的Docker中MySQL容器root用户密码?

摘要:Docker中mysql容器忘记root密码后重置密码方法 之前部署了一个mysql的docker容器,但是把root账号的密码忘了,通过chatGPT给的方法,成功在保留原数据的情况下重置密码。现在记录一下,仅供参考。 步骤: 1)停止原
Docker中mysql容器忘记root密码后重置密码方法 之前部署了一个mysql的docker容器,但是把root账号的密码忘了,通过chatGPT给的方法,成功在保留原数据的情况下重置密码。现在记录一下,仅供参考。 步骤: 1)停止原容器。 2)利用同样的挂载目录新建一个临时容器,使用--skip-grant-tables跳过权限验证。 3)进入临时容器重置root密码。 4)停掉临时容器,重启原容器 1.停止原容器并启动一个临时容器(跳过权限验证) 1.1 停止原容器 docker stop mysql 1.2 以跳过权限验证的方式启动临时容器 docker run -d \ --name mysql-reset \ --hostname mysql-reset \ --network top_cloud_service_bridge \ -v /home/top/mysql-data/mysql:/var/lib/mysql \ -v /etc/localtime:/etc/localtime \ dji/mysql:latest \ --skip-grant-tables \ --lower_case_table_names=1 --skip-grant-tables:跳过权限验证,允许无密码登录。 (此处临时容器和原容器使用相同的挂载目录) 2.进入临时容器,重置root密码 docker exec -it mysql-reset mysql -u root 进入 MySQL 后,执行: UPDATE mysql.user SET authentication_string = '' WHERE user = 'root'; -- 先清空(避免旧哈希干扰) -- 然后用 ALTER USER 生效(此时 FLUSH PRIVILEGES 后已可识别用户) FLUSH PRIVILEGES; -- 再执行下面的代码更改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourpassword'; FLUSH PRIVILEGES; EXIT; 3. 停掉临时容器,重启原容器 docker stop mysql-reset docker rm mysql-reset # 用原命令重启(密码已更新,正常启动) docker start mysql 验证新密码: docker exec -it mine-drone-mysql mysql -u root -p # 输入你设置的新密码