找回密码
 立即注册
首页 业界区 安全 Docker中mysql容器忘记root密码后重置密码方法 ...

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

施婉秀 4 天前
Docker中mysql容器忘记root密码后重置密码方法

之前部署了一个mysql的docker容器,但是把root账号的密码忘了,通过chatGPT给的方法,成功在保留原数据的情况下重置密码。现在记录一下,仅供参考。
步骤:
1)停止原容器。
2)利用同样的挂载目录新建一个临时容器,使用--skip-grant-tables跳过权限验证。
3)进入临时容器重置root密码。
4)停掉临时容器,重启原容器
1.停止原容器并启动一个临时容器(跳过权限验证)

1.1 停止原容器
  1. docker stop mysql
复制代码
1.2 以跳过权限验证的方式启动临时容器
  1. docker run -d \
  2.   --name mysql-reset \
  3.   --hostname mysql-reset \
  4.   --network top_cloud_service_bridge \
  5.   -v /home/top/mysql-data/mysql:/var/lib/mysql \
  6.   -v /etc/localtime:/etc/localtime \
  7.   dji/mysql:latest \
  8.   --skip-grant-tables \
  9.   --lower_case_table_names=1
复制代码
--skip-grant-tables:跳过权限验证,允许无密码登录。
(此处临时容器和原容器使用相同的挂载目录)
2.进入临时容器,重置root密码
  1. docker exec -it mysql-reset mysql -u root
复制代码
进入 MySQL 后,执行:
  1. UPDATE mysql.user
  2. SET authentication_string = ''
  3. WHERE user = 'root';  -- 先清空(避免旧哈希干扰)
  4. -- 然后用 ALTER USER 生效(此时 FLUSH PRIVILEGES 后已可识别用户)
  5. FLUSH PRIVILEGES;
  6. -- 再执行下面的代码更改密码
  7. ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourpassword';
  8. FLUSH PRIVILEGES;
  9. EXIT;
复制代码
3. 停掉临时容器,重启原容器
  1. docker stop mysql-reset
  2. docker rm mysql-reset
  3. # 用原命令重启(密码已更新,正常启动)
  4. docker start mysql
复制代码
验证新密码:
  1. docker exec -it mine-drone-mysql mysql -u root -p
  2. # 输入你设置的新密码
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册