Docker中mysql容器忘记root密码后重置密码方法

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
# 输入你设置的新密码
posted @ 2025-12-28 18:36  深紫色的三北六号  阅读(6)  评论(0)    收藏  举报