MySQL忘记密码的解决方案(重置密码)

问题描述

之前开发一个项目,在本地建了一个MySQL数据库,后来项目搁浅,MySQL数据库就一直躺在硬盘里。也不知道过了多久,现在需要回过头来继续开发项目,但是MySQL密码早就忘记了,尴尬⊙﹏⊙‖∣
好在MySQL服务和安装目录都还在,所以尝试着按照网上的教程来重置MySQL密码。

启动MySQL、并重置密码

MySQL通常是通过服务来启动,不过除了服务来启动,还可以通过命令行的方式来启动。

  1. 首先找到打开服务窗口,找到MySQL服务,双击查看服务详情。
    MySQL服务
  2. 通过服务详情,我们可以看到实际该服务的执行命令为D:\mysqlx64_5.6.16\bin\mysqld MySQL,即实际上服务是通过调用mysql命令行来启动MySQL服务的,其中所以我们可以手动在命令行窗口来通过执行mysqld命令来启动mysql。如下:
mysqld MySQL

可以经过一顿操作之后,发现通过上面的操作之后,MySQL进程并没有启动,真是大写的尴尬。

进程里并没有MySQL

后来通过一番排(bai)查(du)之后发现如果需要通过命令行来启动MySQL,则需要添加--console参数,即完整的命令应该是:

mysqld --console

通过上面的命令,可以成功启动MySQL,并且进程列表里也能找到mysqld的进程:


mysqld --console执行效果

进程列表里也能看到mysqld的进程
  1. 接下来算是比较关键的一步,就是通过跳过权限验证的参数来启动MySQL。
    在命令行窗口,按Ctrl + C结束上面的MySQL进程之后,另外添加skip-grant-tables参数,可以以跳过权限验证的方式启动MySQL。
mysqld --console --skip-grant-tables

此时我们可以看到MySQL正常启动:
MySQL正常启动
  1. 通过上述方式启动MySQL后,我们再通过数据库连接工具,比如Navicat,连接本地的MySQL。由于MySQL启动时加了skip-grant-tables参数,此时我们可以输入任何的账号和密码登录MySQL。
    登录MySQL
  2. 修改MySQL中root的密码。
    MySQL中所有的用户信息都存在mysql.user表,我们可以通过修改该表的相关信息来达到修改密码的目的。
    mysql.user表
update mysql.user set password = password ('abc123') where user = 'root'; -- 其中abc123为新密码
flush PRIVILEGES; -- 刷新MySQL的系统权限相关表
  1. 执行完上述操作后,就可以通过正常方式重新启动MySQL,并用新密码进行登陆了。

写在最后

对于参数skip-grant-tables,除了可以在命令行的的方式添加,也可以通过修改MySQL配置文件my.ini的方式添加,在此不展开来讲。对于正式生产环境,一定要记得关闭该参数,切记!!!

参考链接:
https://blog.csdn.net/m0_58016522/article/details/121669236

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容