docker部署Mysql8一直密码错误记录

正常流程是这样得:

第一步 #拉镜像

docker pull mysql:8.0  

第二步 #运行名为 mysql8 得容器 ,MYSQL_ROOT_PASSWORD=123456 设置密码

docker run -p 3307:3306 \ --name mysql8 \ -e MYSQL_ROOT_PASSWORD=123456 \ -v /docker/mysql8/data:/var/lib/mysql \ -d mysql:8 

第三步 #进入 MySQL 容器

docker exec -it mysql8 bash 

第四步 #登录 MySQL

mysql -u root -p

    这时候可能是我忘记密码了,然后我删除容器

    docker stop mysql8   #停止
    docker rm mysql8   #删除

    再次重新执行一二三四步,还是密码错误。

    最后发现原因是:数据目录挂载问题

    因为之前执行过 docker 挂载 MySQL 容器,且 /docker/mysql8/data 目录下已有之前的缓冲数据,新容器启动时,由于两次挂载的 MySQL 容器密码不一致,就会导致登录不成功。

    • 解决办法:删除 /docker/mysql8/data 目录下的文件,停止并删除当前的 MySQL 容器,然后重新执行 docker run 命令创建容器。具体操作如下:

    rm -rf /docker/mysql8/data/*

    然后再次重复上面得第二、三、四步 ,输入密码123456就正常了。

    然后继续我得操作...设置 允许 root 用户从任何 IP 地址连接:

    ALTER USER 'root'@'%' IDENTIFIED BY '123456';

    ....

    ### 如何重置 Docker 部署MySQL 容器的 Root 用户密码 #### 方法一:通过跳过权限表来重置密码 为了能够绕过现有密码并重新设置新的root用户密码,在`/etc/my.cnf.d/mysql-server.cnf`或其他配置文件中加入特定参数让MySQL启动时不加载授权表。 1. 停止正在运行的MySQL容器: ```shell docker stop <container_name> ``` 2. 使用 `docker inspect` 查看挂载卷的位置,找到主机上对应的my.cnf位置。如果未指定外部卷,则默认位于容器内部 `/etc/mysql/conf.d/` 或者其他路径下[^2]。 3. 编辑该配置文件,在 `[mysqld]` 下添加 `skip-grant-tables` 参数以禁用访问控制[^3]。 4. 启动容器,并进入其交互式 shell: ```shell docker start <container_name> && docker exec -it <container_name> /bin/bash ``` 5. 访问MySQL服务器而无需输入任何密码: ```sql mysql -uroot ``` 6. 更改 root 密码: ```sql FLUSH PRIVILEGES; ALTER USER 'root'@'%' IDENTIFIED BY '新密码'; ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; EXIT; ``` 7. 移除之前添加到配置文件中的 `skip-grant-tables` 行,保存更改并重启容器使这些变化生效。 #### 方法二:直接在容器内操作 对于那些不想编辑配置文件的情况,可以直接按照下面的方式来进行密码恢复工作。 1. 获取当前所有处于活动状态下的Docker容器列表及其详情信息,从中获取目标Mysql实例的名字: ```shell docker ps ``` 2. 利用上述得到的信息执行命令连接至对应的服务端口,打开Bash环境: ```shell docker exec -it <container_name> /bin/bash ``` 3. 一旦成功进入到Shell界面之后就可以继续下一步骤了——即开启一个新的会话去接触MySql本身: ```shell mysql -u root -p ``` 4. 如果记得旧密码则正常登陆;如果不记得的话可以尝试不带 `-p` 参数直接回车看看能否免密登录(取决于最初创建时是否有设定)。假设已经进入了数据库管理工具后,那么就应当切换到名为 "mysql" 的内置库里面去做进一步处理: ```sql USE mysql; ``` 5. 更新用户的认证凭证记录: ```sql ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY '新密码'; ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '新密码'; FLUSH PRIVILEGES; QUIT; ``` 6. 关闭终端窗口前请务必确认所有的变更都已经被妥善提交并且没有任何错误提示出现。
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值