通过命令行参数--skip-grant-tables进行修改,其核心思想是临时关闭 MySQL 的用户权限验证系统,让你可以无需密码直接以最高权限登录,然后修改密码。(--skip-grant-tables 是一个启动选项(参数),用于启动 MySQL 服务器进程(mysqld)。 它的作用是指示 MySQL 服务器在启动时不加载、不检查权限系统相关的数据表。)
如何操作?(Windows系统为例)
停止 MySQL 服务
win+x+a进入PowerShell, 输入:
net stop mysql80
准备两个DOS窗口,保证一个窗口是管理员模式:
2.1找到并复制MySQL的bin目录(路径一般都是这个:C:\Program Files\MySQL\MySQL Server 8.0\bin),在管理员模式DOS下cd进入该文件夹,be like:
2.2 找到并复制配置文件的路径:
啥是配置文件?在ProgramData那找到my.ini这个文件,复制该路径:(一般是这个:C:\ProgramData\MySQL\MySQL Server 8.0\my.ini)
2.3修该默认文件路径:
在管理员DOS里输入:
mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --console --skip-grant-tables --shared-memory
如果你的界面是这样的话,恭喜你,已经完成90%了!
2.4在另一个DOS里面进入mysql命令行客户端(此时无需输入-p就能直接接入mysql)
先看看你要修改哪一个数据库的密码:
切换到指定数据库
use mysql;
加载权限
flush privileges;
继续输入:(这里修改的是123456,单引号里的字符串就是新密码)
alter user 'root'@'localhost' identified by '123456';
如果你的界面是这样的,那么恭喜你,已经完成root密码的修改了!
3. 启动 MySQL 服务(记得关闭那两个DOS窗口!)
至此,我们就能够使用新密码登录root账号了。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程