1. 背景
2. 原理
修改 MySQL 的配置文件 my.cnf,使得可以跳过授权表进入 MySQL,相当于免密码登录。因为所有的用户信息都存储在 mysql 库的 user 表中,所以只要找到 user 表中用户的密码字段,然后修改密码值即可。
3. 修改密码
3.1 开启免密登录
Linux 所有的配置文件默认都放在/etc
目录,MySQL 的配置文件通常命名为my.cnf
,当 /etc 目录中存在重复文件时,会自动重命名。
- 跳过授权:
skip-grant-tables
按 i 进入 vim 的插入模式,末尾追加 skip-grant-tables,按 esc 键返回一般模式,输入vim /etc/my.cnf #vim 打开配置文件
:wq
保存并退出 my.cnf 文件。
配置文件更新要重启 MySQL 服务后,然后免密登录
service mysqld restart #重启 MySQL
mysql -u root -p #不用输入密码直接两次回车登录 MySQL
3.2 修改 user 表
5.6 版本 user 表中密码字段为 password,5.7 版本则为authentication_string
。也可 select 查看一下具体字段。
--打开数据库
use mysql;
--查看 root 用户的表字段
select * from user where user = "root";
--修改 root 用户密码
update user set authentication_string = password("root1234") where user = "root";
--刷新 MySQL 配置
flush privileges;
--退出 MySQL
quit
3.3 退出免密登录
密码已经重新设置好,关闭免密登录就是去把配置文件中的 skip-grant-tables 删除
vim /etc/my.cnf
找到 skip-grant-tables 所在行,vim 一般模式下按下 dd 删除当前行,:wq 保存退出 my.cnf,然后重启 MySQL ,新密码生效。
service mysqld restart #重启 MySQL