windows下mysql彻底卸载需三步:先结束所有mysql相关进程和服务,再删除c:\programdata\mysql等隐藏数据目录及注册表中hkey_local_machine\system\controlset\services\mysql全部键值,最后用sc delete命令精准删除服务项。

服务没停干净,删到一半就卡住
Windows 下 MySQL 卸载失败最常见原因:表面停了服务,其实 mysqld.exe 还在后台跑,或者 MySQL Notifier、MySQL Router 这类配套进程悄悄占着端口和文件句柄。你一删 C:\ProgramData\MySQL,系统就弹“操作无法完成,文件正被另一个程序使用”。
- 进
services.msc停所有带MySQL字样的服务(不止MySQL80,还有MySQLRouter、MySQLNotifier等) - 同时按
Ctrl+Shift+Esc打开任务管理器,在“进程”页搜索mysqld和mysql,把所有匹配项都“结束任务” - 如果仍提示占用,别硬删——重启电脑后立刻进资源管理器删,成功率高很多
删完软件,数据目录和配置还在偷偷生效
控制面板卸载只动了 C:\Program Files\MySQL,但真正决定重装成败的是 C:\ProgramData\MySQL:它存着 data 文件夹(所有数据库)、my.ini(启动配置)、日志和 socket 文件。不删它,新装的 MySQL 会直接读旧配置,可能连不上、密码失效、端口冲突。
-
C:\ProgramData\MySQL是隐藏文件夹,需在资源管理器“查看”→勾选“隐藏的项目”才能看到 -
C:\Users\[用户名]\AppData\Roaming\MySQL存着 Workbench 的连接配置,不删下次打开还会连旧地址 - 顺手检查
C:\根目录或C:\WINDOWS下有没有孤立的my.ini,有就删掉
注册表残留导致“重装报错:服务已存在”
卸载程序不会碰注册表,而 Windows 安装服务时会在 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet*\Services\ 下写入服务项。哪怕你删光所有文件,只要注册表里还留着 MySQL80 服务条目,新安装包就会拒绝覆盖,报错类似 Failed to install service: The specified service already exists。
- 用管理员权限运行
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等) - 删前建议导出对应分支备份——注册表改错不一定会蓝屏,但可能让 MySQL 服务彻底消失在服务列表里
命令行强制删服务比图形界面更可靠
有时服务名看着是 MySQL80,但注册表里实际注册的是 MySQL80、mysql80 甚至带空格的变体;图形界面删不掉,是因为服务状态异常或权限不足。
- 以管理员身份打开 CMD,先停服务:
net stop MySQL80 - 再删服务:
sc delete MySQL80(注意大小写要和服务属性里“服务名称”字段完全一致) - 执行后没报错即成功;如果提示
[SC] DeleteService FAILED 5:,说明服务名不对,去services.msc右键服务→属性→看“服务名称”那一栏填的是什么
C:\ProgramData\MySQL 和注册表里的 ControlSet* 路径,最容易被跳过。











