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
相关推荐
正经教主1 小时前
【FDE系列】阶段2:Day 42(UP详细版):Dockerfile 实战 — 把你的应用打包成镜像
人工智能·docker·fde
刘马想放假2 小时前
Copyparty 轻量文件共享:Docker Compose 部署、权限与多协议使用全指南
docker·容器
1024奇点3 小时前
【仓颉语言入门 · 第二篇 第 12 课】
开发语言·数据库·ide·mysql·开源
冰暮流星3 小时前
mysql之insert优化
数据库·mysql
北方的银狐-Zero3 小时前
OntoL 7.0|面向工业多智能体的语义本体套件,让异构系统真正 “看懂彼此”——OntoL的本体产品矩阵
人工智能·mysql·sqlite·1024程序员节·本体论·本体产品
切糕师学AI3 小时前
Kubernetes 探针全解析:启动探针、存活探针与就绪探针(Startup/Liveness/Readiness Probe)
容器·kubernetes·探针·probe
瑞克-桑切斯4 小时前
4、MySQL 索引与事务
数据库·mysql
二宝哥4 小时前
【问题】本地启动springboot项目启动flowable引擎会提示数据库脚本错误,同事本地启动没有报错(MySQL表明大小写敏感参数)
数据库·mysql
岁寒良木4 小时前
麒麟 V10 (x86_64) 离线/联网部署 Docker 26.1.4 与 MaxKB v2.10 LTS 实战指南
python·docker·kylin