直接卸载 Homebrew MySQL 时跳过删除 /usr/local/var/mysql 可完整保留数据;需先停服务、验证 datadir 路径、确保权限正确及版本兼容,否则重装后数据无法识别。

直接卸载 Homebrew 安装的 MySQL 时,默认不会保留数据目录,但你可以主动跳过删除 /usr/local/var/mysql,就能完整保留所有数据库文件、用户权限表和 binlog —— 这是唯一真正“保留数据”的方式。
停服务前先确认当前数据位置
Homebrew 安装的 MySQL 默认把数据存在 /usr/local/var/mysql,但配置可能被覆盖。运行以下命令验证实际路径:
mysql --verbose --help | grep "datadir"
输出类似 datadir /usr/local/var/mysql 才是真实路径。如果返回的是其他路径(比如 /opt/homebrew/var/mysql),说明你用的是 Apple Silicon 上的非默认 Homebrew 安装,后续清理要对应改路径。
只卸载二进制,不碰数据目录
执行标准卸载流程,但**跳过手动删数据目录这步**:
-
brew services stop mysql—— 必须先停,否则文件被占用无法卸载干净 -
brew uninstall mysql—— 卸载程序、命令行工具、依赖项(如zlib) -
不执行
rm -rf /usr/local/var/mysql—— 这一步留着,就是你的数据保险 -
rm -f /usr/local/etc/my.cnf—— 可删可不删;保留它,重装后可能复用旧配置;删了,新安装会生成默认配置
注意:brew cleanup 不会影响 /usr/local/var/mysql,它只清 Homebrew 缓存,放心运行。
重装时复用旧数据的两个关键点
如果你打算马上重装 MySQL(比如换版本),必须满足以下条件,否则服务启动失败或报错 Table 'mysql.plugin' doesn't exist:
- 新版本与旧数据兼容:MySQL 8.0.x 小版本间(如 8.0.33 → 8.0.35)可直接复用;跨大版本(如 5.7 → 8.0)必须先用
mysqld --upgrade,且不能跳过初始化步骤 - 启动时显式指定 datadir:
mysqld --datadir=/usr/local/var/mysql --skip-grant-tables(调试用),或修改新配置文件中的datadir指向原路径 - 权限必须正确:确保
_mysql用户(Homebrew 创建的系统用户)对/usr/local/var/mysql有完整读写权限,否则启动卡在 “Starting MySQL database server”
真正容易被忽略的不是删不删目录,而是权限和版本兼容性——/usr/local/var/mysql 看似只是个文件夹,但它里面的 ibdata1、mysql/ 子目录、auto.cnf 都绑定着特定版本的内部结构和用户凭证。一不留神就变成“数据还在,但 MySQL 认不出来”。


















