Mac 上装 MySQL 最稳妥的方式是用 Homebrew,跳过官网下载 DMG 或手动配置的麻烦。直接终端几条命令就能跑起来,但有几个关键点不注意,后续连不上、找不到服务、密码失效的问题全会冒出来。
用 Homebrew 安装 MySQL 8.0+
Homebrew 是 Mac 开发环境的事实标准,MySQL 官方也优先适配它。装之前确保已装 Homebrew(没装就先运行
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)")。
brew install mysql
安装完不会自动启动服务,也不会生成默认 root 密码 —— 这是和旧版本最大的区别。MySQL 8.0+ 默认启用
caching_sha2_password认证插件,老客户端可能连不上,这点后面会提。 启动服务:
brew services start mysql(后台常驻)或
mysql.server start(临时) 确认运行状态:
mysqladmin -u root ping,如果报
Access denied,说明 root 密码还没设 首次登录必须用
sudo mysql -u root(跳过密码验证),然后立刻改密码
初始化 root 密码并切换认证方式
MySQL 8.0 默认 root 没密码,但强制要求密码强度(至少 8 位,含大小写字母+数字+符号)。更关键的是,默认认证插件
caching_sha2_password在某些 Python/Node.js 驱动里不被支持,连都会报
Client does not support authentication protocol。
进 MySQL 后执行:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_strong_password';必须指定
@'localhost',不能只写
'root',否则远程访问权限会混乱
mysql_native_password兼容性最好,开发阶段建议用它 改完立即执行
FLUSH PRIVILEGES;
配置 my.cnf 避免常见连接失败
Mac 上 MySQL 的配置文件默认不存在,得自己建。Homebrew 安装后会提示配置路径,通常是
/opt/homebrew/etc/my.cnf(Apple Silicon)或
/usr/local/etc/my.cnf(Intel)。不配的话,MySQL 可能用默认 3306 端口,但 socket 路径不对,导致
mysql -u root -p报
Can't connect to local MySQL server through socket。
创建配置文件,至少包含:
[client] socket = /opt/homebrew/var/mysql/mysql.sock [mysqld] socket = /opt/homebrew/var/mysql/mysql.sock port = 3306socket 路径必须和
brew services list显示的路径一致(看 “Plist” 列) 改完重启服务:
brew services restart mysql验证 socket 是否生效:
mysql --socket=/opt/homebrew/var/mysql/mysql.sock -u root -p
连接工具与驱动兼容性提醒
Sequel Ace、TablePlus 这类 GUI 工具一般没问题,但代码里用
pymysql、
mysql2(Ruby)、
mysqljs/mysql(Node.js)时,得确认是否支持
caching_sha2_password。比如 Node.js 的
mysql2需要显式加选项:
{
host: 'localhost',
user: 'root',
password: 'xxx',
authPlugin: 'mysql_native_password'
}
Python 的 pymysql0.10+ 原生支持,但
mysql-connector-python有些旧版不行,优先换
pymysql如果用 Docker 跑应用,别用
host.docker.internal连宿主 MySQL —— Mac 上它不一定通,改用
127.0.0.1+ 端口映射更稳
真正卡住人的往往不是装不上,而是 socket 路径、认证插件、配置文件位置这三处没对齐。每次重装前删干净
/opt/homebrew/var/mysql目录,比硬调权限省事得多。
