问题描述
之前开发一个项目,在本地建了一个MySQL数据库,后来项目搁浅,MySQL数据库就一直躺在硬盘里。也不知道过了多久,现在需要回过头来继续开发项目,但是MySQL密码早就忘记了,尴尬⊙﹏⊙‖∣
好在MySQL服务和安装目录都还在,所以尝试着按照网上的教程来重置MySQL密码。
启动MySQL、并重置密码
MySQL通常是通过服务来启动,不过除了服务来启动,还可以通过命令行的方式来启动。
-
首先找到打开服务窗口,找到MySQL服务,双击查看服务详情。
- 通过服务详情,我们可以看到实际该服务的执行命令为
D:\mysqlx64_5.6.16\bin\mysqld MySQL
,即实际上服务是通过调用mysql
命令行来启动MySQL服务的,其中所以我们可以手动在命令行窗口来通过执行mysqld
命令来启动mysql。如下:
mysqld MySQL
可以经过一顿操作之后,发现通过上面的操作之后,MySQL进程并没有启动,真是大写的尴尬。
后来通过一番排(bai)查(du)之后发现如果需要通过命令行来启动MySQL,则需要添加
--console
参数,即完整的命令应该是:
mysqld --console
通过上面的命令,可以成功启动MySQL,并且进程列表里也能找到mysqld的进程:
- 接下来算是比较关键的一步,就是通过跳过权限验证的参数来启动MySQL。
在命令行窗口,按Ctrl + C
结束上面的MySQL进程之后,另外添加skip-grant-tables
参数,可以以跳过权限验证的方式启动MySQL。
mysqld --console --skip-grant-tables
此时我们可以看到MySQL正常启动:- 通过上述方式启动MySQL后,我们再通过数据库连接工具,比如Navicat,连接本地的MySQL。由于MySQL启动时加了
skip-grant-tables
参数,此时我们可以输入任何的账号和密码登录MySQL。 - 修改MySQL中root的密码。
MySQL中所有的用户信息都存在mysql.user
表,我们可以通过修改该表的相关信息来达到修改密码的目的。
update mysql.user set password = password ('abc123') where user = 'root'; -- 其中abc123为新密码
flush PRIVILEGES; -- 刷新MySQL的系统权限相关表
- 执行完上述操作后,就可以通过正常方式重新启动MySQL,并用新密码进行登陆了。
写在最后
对于参数skip-grant-tables
,除了可以在命令行的的方式添加,也可以通过修改MySQL配置文件my.ini
的方式添加,在此不展开来讲。对于正式生产环境,一定要记得关闭该参数,切记!!!
参考链接:
https://blog.csdn.net/m0_58016522/article/details/121669236