MySQL忘记密码怎么办_MySQL重置root密码详细步骤

17次阅读

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

MySQL 忘记密码怎么办_MySQL 重置 root 密码详细步骤

如果您无法使用 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

text=ZqhQzanResources