「MySQL」- 重置ROOT密码

  CREATED BY JENKINSBOT

问题描述

在忘记密码、交接工作不完善等等场景下,都需要重置ROOT密码。

解决办法(通用方法)

第一步、修改启动参数

在启动数据库时,使用--skip-grant-tables选项。建议配合skip_networking变量,以防止远程客户端的连接。

或者在配置文件my.cnf中的[mysqld]部分使用skip_grant_tables参数,然后重启数据库。

第二步、连接数据库

当第一步完成后,可以无密码访问数据库:

#!/bin/sh

mysql -uroot -p -h127.0.0.1
# 直接回车即可,无需输入密码

第三步、重置密码

-- 告诉MySQL重新加载授权表,否则无法执行账户管理语句
FLUSH PRIVILEGES;

-- 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

第四步、如果上述操作失败

如果上述操作失败,可以修改MySQL的用户表:

UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPass') WHERE User = 'root' AND Host = 'localhost';

FLUSH PRIVILEGES;

参考文献

MySQL 5.7 Reference Manual/B.4.3.2 How to Reset the Root Password
Reset MySQL 5.7 root password