结论是:只删 /usr/local/mysql 和 /library/preferencepanes/my* 远不够,重装后 mysql --version 仍返回版本号、服务起不来、端口被占、密码复用,根本原因是残留未清干净;必须先识别安装方式(homebrew/ macports/ dmg),再针对性清理对应路径,尤其dmg安装需彻底删除9类路径及launchd、hostconfig等隐形项。

直接说结论:只删 /usr/local/mysql 和 /Library/PreferencePanes/My* 远不够,重装后 mysql --version 仍能返回版本号、服务起不来、端口被占、密码复用,基本都是残留没清干净。
先确认 MySQL 是怎么装的
不同安装方式对应完全不同的清理路径,混着删会漏关键项或误删系统文件:
- 执行
brew list | grep mysql,有输出 → 是 Homebrew 安装,走brew uninstall mysql+ 手动清数据目录路线 - 执行
port installed | grep mysql,有输出 → 是 MacPorts 安装,用sudo port uninstall mysql80类命令 - 以上都无输出,且
which mysql返回/usr/local/bin/mysql→ 基本是 DMG 官方安装包,必须手动逐项清理 9 类路径
DMG 安装必须删掉的 9 类路径(缺一不可)
DMG 安装不进包管理器,所有文件都是硬写入,漏掉任意一项都会导致重装失败:
- 主程序软链接:
sudo rm -rf /usr/local/mysql - 数据目录(最常被漏):
sudo rm -rf /usr/local/var/mysql—— 新服务拒绝覆盖它,连 localhost 都连不上 - 带版本号的原始目录:
sudo rm -rf /usr/local/mysql*(如/usr/local/mysql-8.0.33) - 启动项:
sudo rm -rf /Library/StartupItems/MySQLCOM - 偏好设置面板:
sudo rm -rf /Library/PreferencePanes/My*和rm -rf ~/Library/PreferencePanes/My* - 安装收据(导致重装沿用旧初始化):
sudo rm -rf /var/db/receipts/com.mysql.* - 全局配置:
sudo rm -f /etc/my.cnf(若存在,新安装会强制加载) - socket 文件:
sudo rm -f /tmp/mysql.sock /tmp/mysql.sock.lock - 二进制软链接:
sudo rm /usr/local/bin/mysql*(包括mysqld、mysqladmin等)
别忘了 launchd 和 hostconfig 这两个隐形开关
这两项不清理,会导致开机自启残留、launchctl load 报错、甚至新装服务根本拉不起来:
- 删 launchd plist:
sudo rm -f /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist(先用ls /Library/LaunchDaemons/ | grep mysql确认实际文件名) - 编辑
/etc/hostconfig:sudo vim /etc/hostconfig,删掉含MYSQLCOM=-YES-的整行 - 环境变量检查:
echo $PATH若含/usr/local/mysql/bin,需从~/.zshrc或~/.bash_profile中删掉对应export PATH=行
最容易被忽略的是 /usr/local/var/mysql 和 /var/db/receipts/com.mysql.*:前者存着所有表文件和 ibdata1,后者让安装器误判“已安装”,跳过初始化流程——结果就是 mysqld 启动后立刻崩溃。删之前务必确认服务已停:sudo killall mysqld,再用 ps aux | grep mysql 验证无残留进程。











