最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何卸载MySQL并彻底清理残留文件
时间:2026-09-01 19:12:48 编辑:袖梨 来源:一聚教程网
Windows下sc delete后服务残留,需先用sc queryex | findstr /i "mysql"查真实服务名(如MySQL80),再net stop该服务后sc delete;Linux需apt purge+autoremove+手动删/var/lib/mysql等目录;ProgramDataMySQL需takeown+icacls获取权限后rd删除;注册表仅删MySQL AB键及精确匹配的服务名项。
Windows 下 sc delete 之后服务仍残留?先确认真实服务名
直接执行 sc delete MySQL 失败,往往是因为服务名不是字面的 “MySQL”。Windows 上 MySQL 服务名通常带版本后缀,比如 MySQL80、MySQL57 或 mysqld。不查准就删,会删错或删不掉。
正确做法是:以管理员身份打开 CMD,运行:
sc queryex | findstr "SERVICE_NAME",再逐行过滤含 mysql 的行;或者更直接:
sc queryex | findstr /i "mysql"。输出里 SERVICE_NAME: MySQL80 这一行才是你要用的真实服务名。
- 删服务必须用查到的完整服务名,例如:
sc delete MySQL80 - 删之前务必先停服务:
net stop MySQL80 - 如果
sc delete报“拒绝访问”,说明权限不足——必须用管理员 CMD,且不能是普通 PowerShell 窗口
Linux 用 apt purge 还残留 /var/lib/mysql?别跳过 autoremove
apt remove mysql-server 只卸载二进制,不会删配置和数据目录;apt purge 才真正清配置,但即便如此,/var/lib/mysql 和 /etc/mysql 仍可能留着——因为它们被标记为“配置文件”,apt 默认保留以防用户想复用。
所以完整清理链必须包含:
sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*
→ sudo apt autoremove(这步会连带删掉被依赖但已无主包的库)→ sudo rm -rf /var/lib/mysql /etc/mysql /var/log/mysql*
-
autoremove不是可选步骤,它会清理libmysqlclient21等残留依赖,否则重装时可能冲突 -
/var/log/mysql*必须手动删,日志文件不归 apt 管理,但会影响新实例启动(尤其当旧错误日志触发 SELinux 拒绝时) - CentOS/RHEL 用户注意:
yum remove不等价于purge,得搭配yum clean all+ 手动rm -rf /var/lib/mysql
ProgramDataMySQL 删不掉?隐藏属性 + 权限锁是主因
C:ProgramDataMySQL 是 Windows 下最顽固的残留点,不是“删不掉”,而是它同时受三重保护:系统隐藏属性、NTFS 权限继承、以及可能被 explorer.exe 或杀毒软件占用。
别用资源管理器右键删除。正确顺序是:
- 先在文件夹选项中勾选“显示隐藏的文件、文件夹和驱动器”
- 以管理员身份打开 CMD,cd 到父目录:
cd C:ProgramData - 用
takeown /f MySQL /r /d y获取所有权 - 再用
icacls MySQL /grant administrators:F /t赋予完全控制权 - 最后
rd /s /q MySQL强制递归删除
如果仍提示“正在使用”,任务管理器里检查 mysqld.exe、mysql.exe、甚至 workbench.exe 是否真退出——它们可能后台挂着没关干净。
注册表里删错键导致蓝屏?只动明确含 MySQL AB 的路径
注册表不是垃圾桶,乱删 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices 下所有 MySQL 相关项,极可能破坏其他服务(比如 WAMP/XAMPP 共存时,删错项会让 Apache 启动失败)。
安全范围只有三个位置,其余一律不动:
-
HKEY_LOCAL_MACHINESOFTWAREMySQL AB(主厂商键,必删) -
HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMySQL AB(64 位系统下 32 位兼容键,存在才删) -
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices下名称精确匹配你查到的服务名(如MySQL80),而非模糊搜 “mysql”
删前务必导出备份:reg export "HKEY_LOCAL_MACHINESOFTWAREMySQL AB" mysql-ab-backup.reg。删完别重启,先验证 PATH 里没 MySQL 路径、命令行敲 mysql --version 报“不是内部命令”才算过关。