MySQL 8.0.23 @Windows 重置Root 密码

  1. 官网下载Installer正常安装,默认服务名为:MySQL80,默认程序安装路径为:C:\Program Files\MySQL\MySQL Server 8.0,默认数据文件Data和配置文件my.ini的路径为:C:\ProgramData\MySQL\MySQL Server 8.0image.png
  2. 默认安装后,正常使用时没有问题的(至少现在没遇到过),但是如果遇到忘记root密码,需要使用mysqld命令的时候(官方Reset Root密码说明),就会出问题,会提示找不到Data文件夹,或者手动创建的Data文件夹,提示无效。如下
    [Server] Failed to set datadir to 'C:\Program Files\MySQL\MySQL Server 8.0\data\' (OS errno: 2 - No such file or directory)
    
    [MySQL] Failed to find valid data directory

     

  3. 猜测是MySQL的Bug——我在重装了不下10遍MySQL Server之后的结论,mysqld实际是在安装路径下找Data文件夹,而且Data文件夹中的内容是自动生成的,不为空。有了这个思路,就可以来解决问题
    1. 停止默认安装的服务MySQL80:net stop mysql80
    2. 移除MySQL80:.\mysqld.exe -remove mysql80
    3. 重新初始化:.\mysqld.exe --initialize-insecure,此时在C:\Program Files\MySQL\MySQL Server 8.0\路径下有生成data文件夹,里面包含若干文件image.png
    4. 复制C:\ProgramData\MySQL\MySQL Server 8.0 下的ini文件,到C:\Program Files\MySQL\MySQL Server 8.0,修改datadir路径为:datadir="C:/Program Files/MySQL/MySQL Server 8.0\Data" 注意要用引号括起来
    5. 重新安装MySQL服务,指定服务名为MySQL(可以自定义,前后保持一致即可),指定配置文件:.\mysqld.exe --install MySQL --defaults-file="C:\Program Files\MySQL\MySQL Server 8.0\my.ini" 。注意:4 和 5不能忽略,否则后续密码校验或者数据读取、存储,使用的还是ProgramData路径下的Data文件夹
    6. 启动服务:net start mysql .
    7. 此时,设置了正确配置文件和Data路径的MySQL就安装好了。因为使用了全新的Data文件夹,所以root登录不需要密码。直接:.\mysql.exe -u root -p 敲回车登录。image.png
    8. 修改允许登录位置:update mysql.user set host='%' where user='root';
    9. 设置密码:alter user 'root'@'%' identified by '1234' 。现在再登录,就需要输入密码image.png
    10. 接下来模拟遗忘密码的处理流程:
      1. 停止MySQL服务:net stop mysql
      2. 以管理员身份打开Terminal窗口,输入: .\mysqld.exe --console --shared-memory --skip-grant-tables 确认无Error
      3. 新开Terminal窗口,直接输入: .\mysql.exe 即可登录image.png
      4. 登录后刷新:flush privileges
      5. 此时在本机命令行窗口以可以使用新密码登录,其他机器使用Navicat连接仍提示拒绝,在 以管理员身份打开的Terminal窗口中:Ctrl+C停止进程,正常启动服务即可:net start mysql
      6. 然后重新设置密码即可:alter user 'root'@'%' identified by '3456'。

image.png

 

 

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值