当前位置: 首页 > news >正文

Debug —— 本地Mysql数据迁移到Docker的Mysql容器中,使用创建容器时的正确密码登录失败

文章目录

  • 问题阐述
  • 解决方案
    • 问: 我发现我把本地数据库的data里面的文件复制到mysql-data中然后通过数据卷传到mysql容器中对应data的位置,然后这样子创建新容器,即使我创建的时候设置了密码,但是实际上用我创建的时候设置的密码登录是失败的,而用我本地数据库的密码登录是成功的,我不理解
    • 答:
    • MySQL容器数据卷密码冲突问题解析
      • 一、核心现象
      • 二、核心原因:MySQL密码存储机制
      • 三、新密码不生效的关键逻辑
      • 四、解决方式
        • 方式1:保留历史数据,使用旧密码登录
        • 方式2:重置密码(保留历史数据)
        • 方式 3:清空历史数据,新密码初始化(数据丢失)

问题阐述

在这里插入图片描述

在这里插入图片描述

然后寻找了网上的各种CSDN,问了很多ai,方法都差不多。就是配置这个然后重启在这里插入图片描述
然后直接回车登录后改用户的密码,但是我改完后用改的密码登录仍然失败…包括远程navicat连接自然也是失败

解决方案

刚刚我发现,改成用我本地mysql的登录密码在容器中能成功登录,所以问了一下AI。

问: 我发现我把本地数据库的data里面的文件复制到mysql-data中然后通过数据卷传到mysql容器中对应data的位置,然后这样子创建新容器,即使我创建的时候设置了密码,但是实际上用我创建的时候设置的密码登录是失败的,而用我本地数据库的密码登录是成功的,我不理解

答:

MySQL容器数据卷密码冲突问题解析

一、核心现象

  • 本地数据库data目录文件复制到mysql-data数据卷,挂载到新MySQL容器的数据目录。
  • 新容器启动时设置的密码登录失败,使用本地数据库原密码登录成功。

二、核心原因:MySQL密码存储机制

  • MySQL用户密码、权限信息存储在系统表(如mysql.user表),而非配置文件。
  • 系统表数据持久化在数据目录(容器内默认/var/lib/mysql)。
  • 数据卷mysql-data包含本地数据库的历史数据(含mysql.user表),新容器直接读取历史数据,忽略新设置的密码。

三、新密码不生效的关键逻辑

  1. 容器启动时优先检查数据目录状态
    • 数据目录为空(首次启动):用MYSQL_ROOT_PASSWORD初始化密码。
    • 数据目录有数据(复制的本地文件):直接加载历史数据,忽略新密码配置。
  2. 密码验证以历史数据为准
    数据卷中mysql.user表记录本地数据库原密码,新容器验证时读取该记录,导致新密码失效。

四、解决方式

方式1:保留历史数据,使用旧密码登录
  • 直接用本地数据库原密码登录新容器MySQL。
  • 新设置的MYSQL_ROOT_PASSWORD会被忽略,无需额外配置。
方式2:重置密码(保留历史数据)
  1. 启动容器:docker compose -f docker-compose.env.yml up -d mysql

  2. 进入容器:docker exec -it mysql bash

  3. 无密码登录:mysql -u root --socket=/var/run/mysqld/mysqld.sock

  4. 执行SQL重置密码:

    ALTER USER 'root'@'%' IDENTIFIED BY '新密码';
    ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
    FLUSH PRIVILEGES;
    

    这里我有个问题,我跟着ai和各个CSDN帖子早就试过好多遍这个重置密码了,我不明白为什么改完后还是无法用新密码登录???

  5. 用新密码重新连接。

方式 3:清空历史数据,新密码初始化(数据丢失)
# 1. 停止容器
docker compose -f docker-compose.env.yml down# 2. 查看数据卷名称(确认需删除的数据卷)
docker volume ls# 3. 删除数据卷(替换为实际数据卷名称)
docker volume rm gold_mysql-data# 4. 重启容器,新密码生效
docker compose -f docker-compose.env.yml up -d mysql
http://www.dtcms.com/a/561692.html

相关文章:

  • Mesh Wi-Fi网络技术
  • SpringBoot的yaml配置文件,热部署
  • 我网站正在建设中wordpress 403
  • 【深度学习】超参数调整(Hyperparameter Tuning)
  • .net 网站开发教程wordpress阿里云oss插件
  • 【Linux】多路转接epoll
  • Flutter中mixing的原理及应用场景
  • 如何做购物网站吴谨含厂家不愿做网站
  • 如何编译QT可执行release程序
  • 网站优化竞争对手分析自己做的娱乐平台网站
  • 个人网站 审批wordpress文件上传
  • 跟der包学习java_day3「运算符和表达式」
  • 720全景网站怎么做wordpress 白边
  • 网站职业技术培训学校深圳宝安做网站的公司
  • 【Linux】进程概念(二)
  • 全国网站设计公司wordpress 缓慢
  • 平台商城网站开发如何修复网站中的死链
  • Flask-SQLAlchemy 操作 SQLite 数据库示例
  • 绍兴在线制作网站潍坊汇聚网站
  • 【大语言模型 111】LLM服务可观测性实战:构建企业级监控体系
  • MATLAB雷达定位系统仿真
  • 免费模板素材网站ppt交互式网页设计
  • 加强门户网站建设与管理办法sticklr wp wordpress
  • 接做网站私活重庆网站建设冒号
  • 万众城网站建设做西点的网站
  • Fatbeans(TCP抓包改包与调试工具) 中文绿色版
  • SNN(TTFS)论文阅读——LC-TTFS
  • dw网站建设的数据库电子商务网站有哪几种
  • Spring相关API
  • 基于W55MH32的WAV音频播放终端