MySQL 8.0/8.x忘记密码:无需跳过授权表直接修改root密码的正确方法

陆景行
陆景行
发布时间:2026-10-15| 6人浏览过
原创

在使用MySQL 8.0及以上版本时,忘记root密码往往面临尴尬局面:网上流行的"跳过授权表"法因`ALTER USER`限制而失效,直接`UPDATE`密文字段又因哈希校验失败导致无法登录。本文提供一种基于`authentication_string`特性的解决方案,先清空密文以绕过身份验证,随后在正常模式下更新密码,确保操作合法且有效。

原理分析:为何传统方法会失效

MySQL 8.0对认证机制进行了重构,不再使用旧版本的`password()`函数,而是采用更安全的密码插件和存储格式。理解以下两点是成功重置的关键:

  1. 密文与明文的差异:`authentication_string`字段存储的是密文(Hash)。许多教程建议直接在命令行或跳过授权表模式下执行 `UPDATE user SET authentication_string="12345" WHERE user="root";`。这种做法是错误的,因为服务端在验证时会尝试将输入的明文转换为密文进行比对,直接将明文写入密文位置必然导致校验不通过,提示Access Denied。
  2. 跳过授权表的局限性:常见的应急方案是使用 --skip-grant-tables 启动数据库。虽然这允许无权限访问,但在此模式下部分SQL语法(如 `ALTER USER ... IDENTIFIED BY 'xxx'`)是被禁用的,执行会报错。

核心思路:既然密文校验难以处理,最稳妥的办法是先将该字段清空。空值的明文和密文在逻辑上是等效的,这使得我们可以使用“空密码”顺利进入MySQL的正常运行模式,进而使用合法的 `ALTER USER` 语句完成密码重置。

实战步骤

第一步:停止现有的MySQL服务

在Windows环境下,我们需要通过系统服务管理器停止正在运行的MySQL进程,为后续的参数调整做准备。

net stop mysql

第二步:启动跳过授权表模式的服务实例

在命令行中手动启动mysql服务,并附加特定参数。这将启动一个不加载权限表的新进程,允许我们进行底层数据修改。

  • --console: 在控制台输出日志,方便查看错误信息。
  • --skip-grant-tables: 跳过权限表,允许任何用户以任意密码登录。
  • --shared-memory: Windows特有的共享内存协议,通常用于本地连接。
mysqld --console --skip-grant-tables --shared-memory

执行成功后,当前cmd窗口应显示日志滚动。**不要关闭此窗口**,它正在后台维持着特殊状态。

第三步:建立免密连接

打开一个新的管理员权限CMD窗口,输入以下命令即可直接进入数据库,此时无需输入密码:

命令:mysql

第四步:修改root密码认证字段为空

进入数据库后,依次执行以下SQL语句。这一步的目的是将root用户的认证凭据清空,以便后续能用空密码登录正式的服务。

USE mysql;
UPDATE user SET authentication_string="" WHERE user="root";

第五步:刷新权限并退出临时会话

虽然跳过了授权表,但修改系统表后仍需显式刷新缓存以确保更改生效(尽管在某些配置下可能非强制,但养成习惯更为稳妥),然后退出当前临时连接。

FLUSH privileges;
exit;

第六步:恢复正常的MySQL服务

回到之前那个正在运行的、带有--skip-grant-tables参数的CMD窗口:

1. 按下 Ctrl + C 终止当前运行的mysqld进程。 2. 再次启动标准的MySQL服务,不带额外参数。
net start mysql

第七步:以新密码重新设置正式密码

现在回到新的CMD窗口,使用刚才设置为空的密码(即无密码)登录数据库:

命令:mysql -uroot -p (提示输入密码时直接回车即可)

成功登录后,执行标准的 `ALTER USER` 语句修改最终密码:

-- 修改root密码 (请替换为你想要的密码)
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';

-- 刷新权限
FLUSH PRIVILEGES;
-- 退出
exit;

第八步:验证登录

最后,使用刚才设定的密码尝试登录,如果成功进入交互界面,说明密码重置完成。

以上就是关于MySQL 8.0/8.x忘记密码更改root密码的详细内容,更多关于MySQL 8.x密码重置的技巧与排查方法请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。