必须用brew install mysql@8.0并确保homebrew运行在arm原生模式(which brew输出/opt/homebrew/bin/brew、arch输出arm64),手动配置path指向/opt/homebrew/opt/mysql@8.0/bin,初始化时用--initialize-insecure,再执行alter user...identified with mysql_native_password降级认证插件,最后设宽松密码策略。

直接装 brew install mysql 在 M 系列芯片上大概率会失败或装出 x86_64 兼容版,不是真 ARM 原生——必须确认安装路径、架构和密码策略三者全部对齐,否则后续连接、性能、Navicat 兼容性全崩。
确认 Homebrew 是否运行在 ARM 原生模式
Apple Silicon(M1/M2/M3)默认用 /opt/homebrew,但很多人误装了 Intel 版 Homebrew 或通过 Rosetta 启动终端,导致 brew install mysql 拉取的是 x86_64 二进制包。
- 运行
which brew,输出必须是/opt/homebrew/bin/brew;如果是/usr/local/bin/brew,说明你装的是 Intel 版,得重装 - 运行
arch,输出必须是arm64;如果看到i386,说明终端正在 Rosetta 下运行,关掉终端,右键「终端」→「显示简介」→取消勾选「使用 Rosetta 运行」 - 执行
brew update && brew upgrade确保 formula 是最新 ARM 适配版
安装时指定 mysql@8.0 并验证架构
Homebrew 默认 mysql 可能指向较新主干(如 8.4),而部分工具(如旧版 Navicat、Laravel Sail)对 8.3+ 的 caching_sha2_password 插件支持不稳定。稳妥起见,明确锁定 8.0 系列。
- 运行
brew search mysql@8.0确认可用版本(截至 2026 年 7 月,mysql@8.0仍被维护) - 执行
brew install mysql@8.0,不要用mysql别名 - 启动服务:
brew services start mysql@8.0 - 验证是否 ARM 原生:
/opt/homebrew/opt/mysql@8.0/bin/mysql -V,输出中必须含macos22-arm64或类似字样(不是x86_64)
绕过 validate_password 密码策略的初始化坑
MySQL 8.0 默认启用 validate_password,mysql_secure_installation 一跑就报 ERROR 1819 (HY000)。Homebrew 安装后首次启动不自动初始化数据目录,得手动触发,且不能直接连 root ——它还没密码。
- 先停服务:
brew services stop mysql@8.0 - 手动初始化:
/opt/homebrew/opt/mysql@8.0/bin/mysqld --initialize-insecure --user=$(whoami) --basedir=/opt/homebrew/opt/mysql@8.0 --datadir=/opt/homebrew/var/mysql@8.0(注意--initialize-insecure,不是--initialize) - 启动服务:
brew services start mysql@8.0 - 此时可无密登录:
mysql -u root,然后立刻执行:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Aa123456!';
这一步强制降级认证方式,避免 Navicat / TablePlus 连不上 - 再设密码策略宽松些(仅开发用):
SET GLOBAL validate_password.policy = LOW;SET GLOBAL validate_password.length = 4;
环境变量和命令冲突必须清理干净
很多教程让加 /usr/local/mysql/bin 到 PATH,但 Homebrew 装的 mysql@8.0 根本不在那儿——它在 /opt/homebrew/opt/mysql@8.0/bin。混用会导致 mysql 命令调用错版本,甚至 mysqld 启动失败。
- 检查当前
mysql来源:which mysql,如果不是/opt/homebrew/opt/mysql@8.0/bin/mysql,说明 PATH 有冲突 - 编辑
~/.zshrc(M 系列默认 shell 是 zsh),删掉所有含/usr/local/mysql的export PATH行 - 只保留这一行:
export PATH="/opt/homebrew/opt/mysql@8.0/bin:$PATH" - 执行
source ~/.zshrc,再验证mysql -V和which mysqld是否都指向 Homebrew 路径
最常被忽略的一点:Homebrew 安装的 mysql@8.0 默认监听 127.0.0.1:3306,但不绑定 ::1(IPv6 localhost)。如果你用 Docker 容器连宿主 MySQL,或某些 CLI 工具走 IPv6,会连不上——这不是密码问题,是 bind-address 配置项没显式放开。需要手动改 /opt/homebrew/etc/my.cnf,在 [mysqld] 下加 bind-address = *,再重启服务。











