讲师中心 微信公众号
AI工具推荐 视频效率加速

如何通过命令行重置MySQL 8.0的root管理员密码?

陌丽吖_9267

陌丽吖_9267

发布时间:2026-08-12 09:56:06

|

660人浏览过

|

来源于php中文网

原创

必须先停掉 mysqld 进程,否则所有操作都无效;MySQL 8.0 要求彻底终止所有 mysqld 实例(Windows 用任务管理器杀进程,Linux/macOS 用 sudo pkill mysqld 或 systemctl stop),再配合 --shared-memory(Windows)或 --skip-networking(Linux/macOS)启动 --skip-grant-tables 模式,登录后须先清空 authentication_string 字段、再 ALTER USER 指定 mysql_native_password 插件改密,并配置 default_authentication_plugin 且移除 skip-grant-tables 后重启服务。

如何通过命令行重置mysql 8.0的root管理员密码?

必须先停掉 mysqld 进程,否则所有操作都无效

MySQL 8.0 不允许在服务运行状态下绕过权限验证。哪怕只残留一个 mysqld.exe 进程(比如 phpEnv 启动后没彻底关干净),后续的 --skip-grant-tables 或 --init-file 都会静默失败或直接崩溃。

Windows 下推荐用任务管理器全选结束所有 mysqld.exe;Linux/macOS 必须执行 sudo pkill mysqld 或 sudo systemctl stop mysql。别信“重启服务就够了”——要的是进程彻底消失。

  • 检查是否清干净:tasklist /fi "imagename eq mysqld.exe"(Windows)或 ps aux | grep mysqld(Linux/macOS)
  • phpEnv 用户特别注意:它不注册 Windows 服务,net stop 无效,只能靠任务管理器杀进程
  • 跳过这步直接改配置,大概率卡在启动、报错或连不上,但错误日志里可能只写“Can't start server”,不提权限问题

Windows 下用 --shared-memory + --skip-grant-tables 才能连上

单纯加 --skip-grant-tables 在 Windows 会报错:TCP/IP, --shared-memory, or --named-pipe should be configured on NT OS。MySQL 8.0+ 默认禁用网络连接,必须显式启用本地通信协议。

正确启动命令(管理员 CMD,cd 到 MySQL bin 目录):

mysqld --shared-memory --skip-grant-tables --console

这个窗口会阻塞,别关——它就是无权限模式的 mysqld 实例。另开一个 CMD,直接运行:

mysql -u root

不加 -p,也不输密码。如果提示 ERROR 2002 (HY000),说明共享内存没生效,常见原因是没用管理员权限,或路径不对。

  • 路径必须是绝对路径,且 mysqld 要能读到 my.ini(如果存在)。找不到配置时,它会用默认参数,但可能不兼容你的 data 目录
  • --console 是为了看到启动日志,方便判断是否真跑起来了
  • Linux/macOS 可用 mysqld_safe --skip-grant-tables &,但 8.0.24+ 已弃用 mysqld_safe,建议改用 mysqld --skip-grant-tables &

ALTER USER 前必须先清空 authentication_string

MySQL 8.0+ 的认证字段是 authentication_string,不是老版本的 Password 字段。直接 ALTER USER 会报错:ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'。

MySQL
MySQL

编写正确的MySQL查询,避免字符集、索引和锁方面的常见陷阱。

下载

登录后立即执行这三行(顺序不能乱):

USE mysql;<br>UPDATE user SET authentication_string = '' WHERE User = 'root' AND Host = 'localhost';<br>ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';

做完立刻 FLUSH PRIVILEGES;。不刷,新密码不会生效;刷早了(在 UPDATE 前),可能触发缓存冲突。

  • 如果连上去发现 CURRENT_USER() 返回 'root'@'127.0.0.1',说明你实际连的是另一个账户,得同步改:ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY '新密码';
  • 密码需满足策略:至少 8 位,含大小写字母、数字、特殊字符。设太简单会报 ERROR 1819 (HY000)
  • phpEnv 等免安装版,user 表可能在 mysql 库外,先 SHOW DATABASES; 确认

更稳妥的做法是用 --init-file 启动一次就完事

避免手动连库、输 SQL、顺序出错等风险,直接让 mysqld 启动时自动执行密码修改。适合脚本化或怕手抖的场景。

步骤:写一个临时 SQL 文件(如 C:\tmp\reset.sql),内容只有一行:

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';

然后停掉所有 mysqld,用这条命令启动(管理员 CMD):

mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --init-file="C:\tmp\reset.sql" --shared-memory

等几秒,进程自动退出(成功执行后会停),删掉 reset.sql,再正常启动服务即可。

  • --init-file 是 MySQL 8.0 官方推荐方式,比 --skip-grant-tables 更安全,不暴露无权限状态
  • 路径里的 my.ini 必须是服务实际加载的那个(通常在 C:\ProgramData\,不是 Program Files)
  • Linux 下路径用正斜杠,且文件权限要设为 600,否则 mysqld 拒绝读取
真正卡住人的地方,往往不是哪一步做错了,而是某个细节被忽略:比如 CURRENT_USER() 和 USER() 的区别、共享内存没启用、authentication_string 没清空、或者以为改了客户端 my.ini 就能影响服务端认证。这些点不验证,重试十次也进不去。

热门AI工具

更多
二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

4403

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

911

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

1149

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

6341

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

3143

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

6300

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

8601

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

1170

2024.04.29

Playwright 测试失败怎么办
Playwright 测试失败怎么办

Playwright测试失败专题汇集超时、定位器匹配、浏览器提前关闭、依赖与插件配置、文件上传、SSL及Docker启动等故障文章,并介绍通过截图、报告和Trace定位错误。

0

2026.10.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 188人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn