必须配合命令行强制删服务、手动清C:\ProgramData\MySQL目录及注册表中Services\MySQL*、Oracle\MySQL Server等键值,否则重装必报“服务已存在”或连不上数据库。

不能只靠控制面板卸载,必须配合命令行强制删服务 + 手动清目录 + 注册表清理,否则重装必报错“服务已存在”或连不上数据库。
sc delete 命令必须用管理员权限执行,且服务名要完全匹配
控制面板卸载后,MySQL80 或 MySQL 服务仍注册在系统里,新安装包会直接拒绝覆盖。图形界面停服务不等于删服务项,得用命令行硬删:
- 以管理员身份打开 CMD 或 PowerShell
- 先确认服务名:
sc queryex type= service state= all | findstr /i "mysql",输出里NAME:后面那个就是真实服务名(常见为MySQL80、MySQL57、mysqld) - 执行:
sc delete MySQL80(把MySQL80换成你查到的实际名) - 成功返回
[SC] DeleteService SUCCESS;失败常见原因是服务没停干净,或名字输错
C:\ProgramData\MySQL 是核心残留点,不删它重装等于白装
这个隐藏目录存着 data(所有库文件)、my.ini(主配置)、mysql-error.log(错误日志)。新安装时若发现该目录存在,会直接读旧配置——导致端口冲突、root密码失效、socket 路径错乱。
- 资源管理器地址栏直接输入:
C:\ProgramData\MySQL,回车(需提前开启“显示隐藏的项目”) - 若提示“文件正被占用”,说明
mysqld.exe还在后台跑:任务管理器 → “详细信息”页 → 结束所有mysqld.exe和mysqlrouter.exe进程 - 删完后检查
C:\Users\[用户名]\AppData\Roaming\MySQL,这里存 Workbench 的连接配置,不删下次打开还连旧实例
注册表里 MySQL 相关键值必须全路径删除,不能只删子项
卸载程序从不碰注册表,而 Windows 安装服务时会在多个 ControlSet 下写入完整路径。漏删任意一个,新安装就会卡在“Failed to install service: The specified service already exists”。
Windows 桌面自动化技能,支持鼠标控制(移动/点击/拖拽/滚轮/截图)、键盘输入(文字输入/按键/组合键)、窗口管理(查找/聚焦/最大化/最小化/关闭/移动)、截图并发送文件。提供两种截图方式:Python pyautogui 截图(集成在自动化流程中)和 PowerShell + .NET 零依赖截图(支持区域截图和多显示器)。当用户需要自动化 Windows 桌面操作、控制鼠标键盘、管理窗口、执行 GUI 自动化任务、截图发送文件时使用。
- 运行
regedit,Ctrl+F 搜索MySQL - 重点删这三类完整键(不是只删某个值):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL*HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\MySQL*HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\MySQL* - 别漏掉日志配置项:
HKEY_LOCAL_MACHINE\SYSTEM\*\Services\Eventlog\Application\MySQL(* 匹配 CurrentControlSet / ControlSet001 / ControlSet002) - 删前右键对应键 → “导出”备份,避免误操作后 MySQL 服务彻底消失在 services.msc 里
验证是否真干净:三个命令一试便知
重启电脑后,别急着装新版本,先跑这三行命令确认残留已清空:
-
sc query MySQL80→ 应返回FAILED 1060(服务不存在) -
mysql --version→ 应返回'mysql' is not recognized as an internal or external command -
dir "C:\ProgramData\MySQL"→ 应返回File Not Found
只要其中任一命令有输出,说明还有残留没清掉,重装大概率失败。










