这里以本人使用的MariaDB 10.11为例(操作系统:Rocky Linux 9.3),MySQL 5.7之后的版本应该也适用(未经实际测试)。
一、在my.ini文件里,“[mysqld]”之后加一行,添加设置项:skip-grant-tables ,如下图
二、重启MySQL / MariaDB;
三、进入终端,使用下面命令登录MySQL / MariaDB:
mysql -uroot -p
四、密码随便输入,或者不输入,然后按回车登录;
五、输入“use mysql”,切换到“mysql”表;
六、执行“flush privileges;”命令,刷新权限;
七、执行以下命令,修改root密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
如果还有root@127.0.0.1用户的话,最好再执行以下命令:
ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY '新密码';
八、执行“flush privileges;”命令,刷新权限;
九、退出 MySQL / MariaDB ,把my.ini中刚刚添加的“skip-grant-tables”一行删除,然后重启 MySQL / MariaDB 服务,完成root密码的强制重置。
注意:有部分朋友可能在my.ini中添加skip-grant-tables参数后,重置密码,会遇到以下类似的提示:
Column ‘Password’ is not updatable.
The MariaDB(或 MySQL) server is running with the –skip-grant-tables option so it cannot execute this statement.
这一般是添加 skip-grant-tables 参数重启服务后,没有刷新权限所导致。一定要先刷新了权限,才能重置密码。此外,一定要记得,密码重置结束后,把my.ini中的 skip-grant-tables 设置项删除。