- 环境: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用户密码完成。