DMG安装的MySQL需手动彻底卸载:先停服务(sudo killall mysqld),再删除9类路径(含/usr/local/mysql、/usr/local/var/mysql等)、launchd项、/etc/hostconfig中MYSQLCOM行、socket文件及环境变量中相关PATH。

确认 MySQL 是 DMG 安装的,不是 brew 或 MacPorts
直接执行 brew list | grep mysql 和 port installed | grep mysql,如果都无输出,且 which mysql 返回 /usr/local/bin/mysql,基本可以确定是 DMG 安装。DMG 安装不会注册到包管理器,卸载必须手动清理,漏掉任意一项都可能导致重装失败或 mysql --version 仍能返回版本号。
必须停服务再删,否则文件被占用或残留进程干扰
先彻底终止所有 MySQL 进程:sudo killall mysqld,再检查是否还有残留:ps aux | grep mysql。如果看到 mysqld_safe 或 mysqld 进程,重复 kill;若用系统偏好设置里的 MySQL 控制面板,务必先点 “Stop MySQL Server”。没停干净就删目录,/usr/local/var/mysql 可能删不掉,或者新装后启动报错 “Can’t start server: Bind on TCP/IP port: Address already in use”。
删这 9 类路径,缺一不可
DMG 安装的 MySQL 在 macOS 上分散在多个位置,以下命令需逐条执行(注意空格和斜杠方向):
sudo rm -rf /usr/local/mysqlsudo rm -rf /usr/local/var/mysqlsudo rm -rf /usr/local/mysql*sudo rm -rf /Library/StartupItems/MySQLCOMsudo rm -rf /Library/PreferencePanes/My*rm -rf ~/Library/PreferencePanes/My*sudo rm -rf /Library/Receipts/mysql*sudo rm -rf /var/db/receipts/com.mysql.*-
sudo rm -f /etc/my.cnf(如果存在,它会强制新安装沿用旧配置)
特别注意:/usr/local/var/mysql 是数据目录,/var/db/receipts/com.mysql.* 是安装记录,这两项很多教程漏掉,但它们正是导致重装后密码不变、表结构残留的元凶。
清理 launchd 和 hostconfig 配置项
DMG 安装会注册 launchd 启动项和系统级开关,不清理会导致开机自启残留或 launchctl load 报错:
- 删 launchd 文件:
sudo rm -f /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist(不同版本名略有差异,可用ls /Library/LaunchDaemons/ | grep mysql确认) - 编辑
/etc/hostconfig:sudo vim /etc/hostconfig,删掉含MYSQLCOM=-YES-的整行,保存退出 - 删 socket 文件:
sudo rm -f /tmp/mysql.sock /tmp/mysql.sock.lock
最后检查环境变量:echo $PATH 中若含 /usr/local/mysql/bin,需从 ~/.zshrc 或 ~/.bash_profile 里删掉对应 export PATH=... 行——否则终端还能调用旧二进制,让人误以为没卸干净。


















