重置MySQL root密码有五种方法:一、用--skip-grant-tables跳过权限验证;二、通过init-file执行SQL文件;三、用mysqladmin工具(需原密码);四、在my.cnf中配置skip-grant-tables;五、使用Debian/Ubuntu系统的debian-sys-maint账户。

如果您无法使用root账户登录MySQL,且已遗忘密码,则无法通过常规身份验证访问数据库服务。以下是重置MySQL root密码的多种可行操作路径:
一、使用--skip-grant-tables参数跳过权限验证
该方法通过临时禁用MySQL的权限表加载机制,使root用户可在无密码状态下直接登录,进而修改密码。适用于所有主流MySQL版本,无需原密码即可操作。
1、执行命令停止MySQL服务:systemctl stop mysqld
2、以跳过授权表方式启动MySQL服务:mysqld --skip-grant-tables --user=mysql &
3、在新终端中无密码连接MySQL:mysql -u root
4、切换至mysql系统数据库:USE mysql;
5、根据MySQL版本执行对应密码更新语句:
MySQL 8.0+版本输入:ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
MySQL 5.7及更早版本输入:UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root' AND Host='localhost';
6、刷新权限使更改立即生效:FLUSH PRIVILEGES;
7、退出MySQL客户端:EXIT;
8、终止跳过授权表运行的mysqld进程,并以正常模式重启服务:killall mysqld && systemctl start mysqld
二、通过init-file选项初始化密码
此方法利用MySQL启动时自动执行指定SQL文件的特性,在服务启动阶段直接注入密码修改指令,全程无需交互式登录,安全性较高。
1、停止MySQL服务:systemctl stop mysqld
2、创建初始化SQL文件,例如:echo "ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';" > /var/lib/mysql/init_root.sql
3、设置文件权限为仅属主可读写:chmod 600 /var/lib/mysql/init_root.sql
4、编辑MySQL配置文件/etc/my.cnf,在[mysqld]段落下添加:init-file=/var/lib/mysql/init_root.sql
5、启动MySQL服务:systemctl start mysqld
6、启动成功后,MySQL会自动执行init_root.sql中的语句并完成密码重置,此时可删除该文件及配置项中init-file行以恢复正常启动流程。
三、使用mysqladmin工具重置密码
当MySQL服务仍在运行且您掌握操作系统级管理员权限时,可借助mysqladmin实用程序直接修改root密码,无需停服或修改配置。
1、确保MySQL服务处于运行状态:systemctl status mysqld
2、执行密码重置命令(需输入当前密码,若完全遗忘则此法不可用):mysqladmin -u root -p password '新密码'
3、系统将提示输入当前root密码;若正确输入,新密码即刻生效。
4、使用新密码验证登录:mysql -u root -p
四、修改my.cnf配置启用跳过授权模式
该方式通过持久化配置变更实现跳过权限验证,适合无法使用命令行参数启动MySQL的受限环境(如容器或某些云平台托管实例)。
1、停止MySQL服务:systemctl stop mysqld
2、编辑/etc/my.cnf文件,在[mysqld]节内新增一行:skip-grant-tables
3、保存文件后启动MySQL:systemctl start mysqld
4、连接MySQL并执行密码更新:mysql -u root
5、在mysql>提示符下运行:ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; FLUSH PRIVILEGES;
6、退出后编辑/etc/my.cnf,**务必删除或注释掉skip-grant-tables行**,再重启服务:systemctl restart mysqld
五、使用debian-sys-maint维护账户(仅限Debian/Ubuntu系统)
Debian系发行版在安装MySQL时会自动生成一个具有高权限的维护账户debian-sys-maint,其凭证存储于/etc/mysql/debian.cnf中,可用于重置root密码。
1、查看维护账户凭据:sudo cat /etc/mysql/debian.cnf | grep -E "(user|password)"
2、使用该账户登录MySQL:mysql -u debian-sys-maint -p
3、输入上一步查得的password字段值完成认证
4、执行root密码更新:ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; FLUSH PRIVILEGES;
5、退出并验证新密码:EXIT;,随后运行 mysql -u root -p










