MySQL破解root用户密码


  • 环境:CentOS 7
  • MySQL版本:MySQL 5.7.29

一、停止MySQL进程的运行

service mysqld stop

二、修改配置文件

vim /etc/my.cnf

在[mysqld]下添加两行:

user=mysql
skip-grant-tables

第一行user=mysql的意思是指定启动MySQL进程的用户。第二行是关键,skip-grant-tables的意思是跳过密码验证。
wq保存退出。

三、启动MySQL进程

service mysqld start

四、直接登录MySQL,不接密码

五、修改密码

要注意的是,此时直接修改密码会报错,如下所示。

错误语句:ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
看不懂英文就扔谷歌翻译:

解决办法是刷新权限,加载原来没有加载的权限表。

msyql> flush privileges;

skip-grant-tables语句就是绕过了grant授权表,实现免密登录,而执行flush privileges之后就相当于加载了grant授权表。

另外修改密码不能直接使用set password='Charramma';命令修改。

报错说没有在用户表中找到匹配的行。
正确的语法应该是下面这样:

msyql> set password for 'root'@'localhost' = 'Charramma123#';

如下,修改成功。

六、修改MySQL配置文件

就是把之前添加的两行内容注释掉或删除掉。

七、重启MySQL服务

service mysqld restart

八、使用新密码登录


至此,破解root用户密码完成。