docker MySQL 密码报错,重新修改保留原样的数据

当前状态是:

  • MySQL 能正常启动
  • 但 root 已经被设置过认证信息
  • 你现在不知道它的有效密码,或者认证插件不匹配

你刚才的结果已经把"现在是空密码"排除了。你贴的启动日志也说明这个库后来一直在正常使用,不是刚初始化的新空库。

现在最稳的处理方式是:直接重置 root 密码。


保留现有数据,重置 root 密码

先停掉当前容器:

bash 复制代码
docker stop deeptest-mysql

然后用同一份数据目录,临时以"跳过权限表"的方式启动一个恢复容器:

bash 复制代码
docker run --rm -d \
  --name mysql-reset \
  -p 3308:3306 \
  -v /root/test_software/data/mysql:/var/lib/mysql \
  mysql:8.0 \
  --skip-grant-tables --skip-networking=0

进入这个临时容器:

bash 复制代码
docker exec -it mysql-reset mysql -uroot

进去后先执行:

sql 复制代码
FLUSH PRIVILEGES;

再看看用户表里 root 的 host 和插件:

sql 复制代码
SELECT user, host, plugin FROM mysql.user WHERE user='root';

然后把密码统一改掉。先执行这两句:

sql 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'deeptest123456';
ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY 'deeptest123456';

如果第二句报 Operation ALTER USER failed,说明没有 'root'@'%',那就忽略,只保留 localhost 那句。

再执行:

sql 复制代码
FLUSH PRIVILEGES;

退出:

sql 复制代码
exit

关掉恢复容器:

bash 复制代码
docker stop mysql-reset

再正常启动原容器:

bash 复制代码
docker start deeptest-mysql

最后测试登录:

bash 复制代码
docker exec -it deeptest-mysql mysql -uroot -p

输入:

text 复制代码
deeptest123456
相关推荐
晚安日记wanna15 小时前
MySQL 回表为什么这么慢?5 种优化手段逐个拆解
数据库·mysql·性能优化
晚安日记wanna15 小时前
索引建了却不走?7 个失效原因逐层排查
数据库·mysql·性能优化
ao-weilai18 小时前
MySQL数据库:基本查询
android·数据库·mysql
java1234_小锋18 小时前
【技术专题】Mysql8 数据库 - Mysql8 查询数据
数据库·mysql
sbjdhjd18 小时前
云安全 | Docker 容器逃逸复盘(二):2375 未授权接口如何突破容器管理边界
网络安全·docker·云原生·数据挖掘·开源·云计算·云安全
吴声子夜歌19 小时前
Docker入门与实战——初识Docker与容器
docker·容器
ShineWinsu20 小时前
对于Redis:事务的解析
数据库·redis·mysql·缓存·面试·事务·acid
JavaPub-rodert20 小时前
公共 Docker 镜像源总失效?用 Harbor Proxy Cache 自建 Docker Hub 镜像缓存
java·缓存·docker
ao-weilai21 小时前
MySQL数据库:内置函数
android·数据库·mysql
YZ1225521 天前
【Docker专题】使用Docker部署Vue-Flask项目前后端分离版【前端Docker部署】
前端·vue.js·docker