news 2026/9/12 2:47:15

Apple Silicon Mac 安装 MySQL 完全指南(dmg 与 Homebrew 双教程)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Apple Silicon Mac 安装 MySQL 完全指南(dmg 与 Homebrew 双教程)

先把话说明白:这是 M 芯片系列教程的第四篇。前面几篇我陆续写了 M1/M2/M3 环境下 Homebrew、Python、Git 这些基础开发的安装折腾过程,这一篇终于轮到数据库了。

这个系列默认你手上是一台 Apple Silicon 的 MacBook,也就是 M1、M2、M3 或者 M4 芯片的机器。为什么单独把 MySQL 拿出来写一篇?因为 MySQL 在 Mac 上的安装方式虽然看着和 Intel 时代差不多,但坑全藏在细节里:你下载的安装包是 ARM 版还是 x86 版、初始化时认证插件选哪个、homebrew 和 dmg 两种方式装出来的目录结构完全不一样。这些不搞清楚,后面项目连不上数据库的时候,排查起来非常痛苦。

这篇文章我会把两条最主流的路都给你走一遍:官方 dmg 图形化安装,以及 Homebrew 命令行安装。然后重点讲初始化配置、日常启停、可视化工具选型,最后附上我实际踩过的坑和排查方法。全文直接照着操作就行,适合刚入手 M 芯片 MacBook 的开发者,也适合那些已经装了 MySQL 但一直觉得哪里不对劲的人对照修正。

1. 安装前必须搞清楚的几件事

1.1 你的 Mac 到底是 ARM 还是 Intel 架构

这一步看着多余,但我在各种群里见过太多人把 M 芯片 Mac 当成 Intel 机器来装软件,导致装出来的 MySQL 是转译运行的老架构版本,跑起来没问题,一到数据量大、连接数多的时候性能就露馅。确认架构的方式很简单,点击左上角苹果图标,选择“关于本机”,查看“芯片”一栏:显示 Apple M1 / M2 / M3 等就是 ARM 架构,显示 Intel 就另当别论。

如果你习惯用命令行,也可以在终端里执行:

uname -m

输出结果是arm64,说明就是 Apple Silicon;输出是x86_64,说明是 Intel 版本。这个判断直接影响你下载哪个安装包,也影响后面很多工具的安装路径。M 芯片 Mac 上不是不能装 x86_64 的 MySQL,macOS 自带的 Rosetta 2 转译层可以运行它,但完全没有必要,官方早就有原生 ARM 版本,性能和稳定性都更好。

还有一个小细节:如果你是在二手市场买的 MacBook,拿不准机器是不是 M 芯片,直接看系统信息里的芯片型号最靠谱,别信外壳上的贴纸和序列号,二手翻新机器水太深了。

1.2 两种主流安装方式怎么选

Mac 上装 MySQL 目前主流是两条路:一条是去 MySQL 官网下载 dmg 安装包,双击 pkg 文件一路点“继续”完成安装;另一条是通过 Homebrew 执行brew install mysql命令行安装。这两条路没有绝对的好坏,选择标准取决于你的使用习惯和电脑里已经装了什么。

如果你平时很少用终端,或者只是需要在本地跑一个数据库用来学习、做小项目,dmg 图形化安装会更合适。原因是安装向导自带可视化配置界面,root 密码、开机自启、端口这些核心设置都能在窗口里完成,不用记命令。安装后系统设置里还会多出一个 MySQL 图标,点一下就能看到服务运行状态,直观多了。

如果你已经在用 Homebrew 管理 Python、Git、Node 这些开发环境,那直接用 brew 装 MySQL 是最省事的。好处是版本统一管理,brew upgrade mysql就能升级,卸载也干净,不会在系统各处留下散落的文件。坏处是安装完成后所有配置都得在终端里操作,对新手不够友好。我个人的习惯是开发机用 Homebrew,帮朋友装的临时学习机用 dmg。

1.3 检查有没有残留版本,避免装出两个冲突的 MySQL

这一步经常被忽略。很多人以前用 Intel Mac 的时候可能装过 MySQL,换了 M 芯片新机器后重新下载,结果就是新老两个版本同时存在,端口都被 3306 占着,怎么启动都报错。更隐蔽的情况是持久装的 MySQL 是旧版本的残留数据目录,新版本启动时读取了不兼容的数据文件,直接崩溃。

所以在安装前,先检查一下系统里有没有旧的 MySQL 服务:

which mysql ps aux | grep mysql ls /usr/local/mysql /opt/homebrew/var/mysql 2>/dev/null

如果which mysql有输出,说明 PATH 里已经存在 MySQL 命令;如果进程列表里有 mysqld 在跑,说明服务已经在运行;如果/usr/local/mysql目录存在,说明曾经用 dmg 方式装过。发现任何残留,先停掉服务再彻底卸载,别急着直接覆盖安装。dmg 方式卸载需要手动删目录,Homebrew 方式卸载执行brew uninstall mysql。新旧数据目录混在一起是最难排查的坑,这个时间耽误不起。

2. 官方 DMG 安装包:最省心的图形化安装流程

2.1 下载 dmg 时怎么选准 ARM 版本

打开 MySQL 官网的下载页面,你第一眼看到的是最新的 GA 版本,通常是一个 8.x 的版本号。页面下方有很多可供选择的平台和安装包格式,macOS 相关的选项一般命名为macOS 13 (ARM, 64-bit), DMG Archive这类格式。关键就是认准两个词:macOSARM。如果看到的是x86, 64-bit,那就是给 Intel Mac 用的,别下载。

文件名的命名规则一般是mysql-8.x.x-macos13-arm64.dmg这样的格式,arm64就是 M 芯片的原生版本。顺便说一句,虽然下载页面上写的是 macOS 13,但 M 芯片上的 macOS 14、15 都能正常安装使用,不用被这个版本号劝退。

安装包的体积在 200 到 400 兆之间,具体看版本。下载时优先选官网,不要走第三方下载站,官网下载的包有签名校验,安装时不会弹“已损坏”这类烦人的提示。如果官网下载速度慢,可以选一个离自己近的镜像源,但还是那句话,装完以后校验一下数字签名更稳妥。

2.2 安装向导一步步怎么走

dmg 包下载完成后,双击挂载镜像,里面通常有两个文件:一个.pkg安装包,以及一个MySQLStartupItem.pkg(有些版本合并进主安装包了)。双击.pkg文件,系统会弹出安装向导。

向导第一步会让你选安装类型,一般直接点“继续”走默认即可。到了“Configuration”这一步是重点,你会看到几个选项需要设置:root 密码(可以输入也可以随机生成)、MySQL 服务是否开机自动启动。如果你只是本机开发使用,我的建议是密码自己设置一个好记但不简单的,开机自启这一项视情况勾选——我个人不推荐开发机默认开机自启,因为日常开发经常需要手动重启 MySQL,自启反而容易在你不知情的时候占用系统资源。

密码设置界面一般还让你选择认证插件类型,默认是Use Strong Password Encryption。这个默认选项对应 MySQL 8.0 的caching_sha2_password认证插件,安全性更高,但前提是你的客户端工具也支持它。如果你为了兼容某些老旧工具而选了Use Legacy Authentication,就等于在装完以后还得手动再改一遍插件,能少一事就少一事。

安装过程会进行到最后一两步时执行初始化数据库、创建配置文件和启动服务。完成后可以在终端里执行mysql --version验证安装是否成功。

2.3 安装完成后系统设置里的 MySQL 图标

dmg 方式安装完以后,打开“系统设置”,在最下面或者通知中心附近会看到一个 MySQL 图标。点进去可以看到服务运行状态,一般安装完成后状态是已启动。如果状态显示未运行,点击“Start MySQL Server”即可。这里注意,如果按钮是灰色或者点击后自动弹回,说明 MySQL 服务启动失败,需要去终端看日志排查,具体的排查方法我在后面的常见问题部分会详细写。

另外一个和系统设置图标相关的点是守护进程权限。macOS 对于网络监听的程序会弹防火墙授权窗口,第一次启动 MySQL 时如果弹窗询问是否允许接受传入连接,务必点“允许”,否则后续本机连接会有各种奇怪的问题,比如 Workbench 能连上但命令行连不上——那是防火墙和命令行进程权限不一致导致的。

装好以后你还会发现终端里直接输入mysql命令可能提示command not found,这不是安装失败,而是 MySQL 的可执行文件目录没有加到 PATH 里。dmg 方式安装的默认路径在/usr/local/mysql/bin,如果你用 zsh(macOS 默认 shell),编辑~/.zshrc文件,加入一行:

export PATH="/usr/local/mysql/bin:$PATH"

保存后执行source ~/.zshrc再输入mysql -u root -p就能正常使用了。

3. 用 Homebrew 安装 MySQL:程序员更习惯的方式

3.1 brew 安装命令与版本选择

在开始之前确认 Homebrew 本身已经安装好了,M 芯片 Mac 的 Homebrew 默认安装路径是/opt/homebrew,Apple Silicon 的原生软件都会装到这里的bin目录下,这和 Intel Mac 时代的/usr/local路径不一样,很多新手在这里容易迷路。

安装命令非常简洁:

brew install mysql

Homebrew 会自动解析并安装依赖,MySQL 本身体积不小,安装过程会下载安装包并自动设置初始化。整个过程大概几分钟,取决于网络状况。安装完成后终端输出里有一段提示,大意是“MySQL 已经安装,当前 root 用户没有密码,建议运行mysql_secure_installation来加固安全性”。

Homebrew 默认安装的是当前最新稳定版 MySQL,一般是 8.x。如果你想指定版本,比如安装 MySQL 8.4 LTS 版本,可以用@语法指定:

brew install mysql@8.4

但要注意,Homebrew 里带@版本的 formula 是 keg-only 模式的,不会自动加入 PATH,你需要根据安装后的提示手动设置 PATH 以及MYSQL_HOME。新手建议直接装默认版本,省得在这个环节卡住。

还有一个细节值得提一下:Homebrew 装 MySQL 时不会让你设置 root 密码,它是用一个临时的空密码来初始化数据的,这和 dmg 向导完全不同。这个差异会导致你第一次连接时的行为不一致,好解决的,我们留到初始化配置部分详细讲。

3.2 启动服务与设置开机自启

Homebrew 装完 MySQL 后,服务不会自动启动,需要你自己执行启动命令。最常用的启动方式是:

brew services start mysql

这个命令的含义是启动 MySQL 服务,并且注册为开机自启项。如果你只是临时跑一次,不想让它开机自启,可以改用:

mysql.server start

这两条命令的区别在于:brew services会把 MySQL 注册到 launchd 里面,由系统后台调度,所以开机后自动运行;mysql.server只是手工启动一个 MySQL 进程,重启系统后需要再次手动启动。对开发机来说,我一般推荐先用mysql.server start,等确实需要常驻服务时再切到brew services,这样更可控。

如果你用brew services start mysql启动后,想查看状态:

brew services list

输出结果里能看到 mysql 这一行显示started。如果显示error,说明服务启动失败,这种情况多数是端口被占用或者数据目录权限异常,后续排查部分会细讲。

另外一个排查小技巧:brew services方式启动的 MySQL,其错误日志可以通过mysql.server来查看,日志路径通常位于/opt/homebrew/var/mysql,目录下会有.err后缀的错误文件。启动失败的时候,优先打开这个文件看最后的错误信息,比看终端输出要准得多。

3.3 数据库文件与配置路径:brew 和 dmg 完全不同

这里必须重点提一下,Homebrew 方式安装的 MySQL 和 dmg 方式安装的 MySQL,存放数据文件和配置文件的路径是完全不同的。别把两个版本混在一起用,否则会出现“启动了 A 版本却读着 B 版本的数据目录”这种极度尴尬的问题。

dmg 方式的话,数据目录默认在/usr/local/mysql/data(Intel)或/opt/homebrew/var/mysql(如果你把 dmg 装到了 Apple Silicon 版本的路径下),配置文件在/etc/my.cnf。Homebrew 方式的话,数据目录默认在/opt/homebrew/var/mysql,配置文件在/opt/homebrew/etc/my.cnf

你可能已经注意到了,/opt/homebrew/var/mysql这个路径会被两种方式同时引用,所以当电脑上同时存在 dmg 版和 brew 版的 MySQL 时,极大概率会出现数据目录打架的问题。遇到这种情况,不要慌,按之前的思路先卸载一个,再重新初始化。

此外,在查看配置文件时注意生效优先级。MySQL 读取配置文件的顺序大致是/etc/my.cnf/etc/mysql/my.cnf/opt/homebrew/etc/my.cnf~/.my.cnf,后读到的配置会覆盖先读到的。这个优先级带来的坑是:你改了/opt/homebrew/etc/my.cnf里面的端口号,但/etc/my.cnf里也有一个端口配置把前面的覆盖了,结果服务监听的还是老端口。排查配置不生效的问题,先确认到底哪个文件真正被读入了。

4. 初始化配置与安全加固

4.1 两种安装方式的初始密码情况

不管是哪条安装路径装完 MySQL,你都要面对第一次登录的问题。先说结论:dmg 方式安装时设置的 root 密码就是初始密码;Homebrew 方式安装后 root 密码默认为空,不需要密码就能登录。

Homebrew 方式第一次登录,直接执行:

mysql -u root

看到欢迎信息就说明登录成功。登录后第一件事是给 root 设置一个密码,执行 SQL:

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

执行完再执行FLUSH PRIVILEGES;使修改立即生效。这里的新密码建议别用过于简单的内容,也不要和系统登录密码相同,免得后续留下安全漏洞。

如果你是用 dmg 方式安装的,但记不清安装时设置的密码了,也不用慌,后面常见问题区我会给一个重置 root 密码的完整流程。

4.2 用 mysql_secure_installation 脚本加固安全

设置完 root 密码后,建议执行一次安全加固脚本:

mysql_secure_installation

这个脚本是 MySQL 官方提供的自动化安全配置工具,会依次询问你是否要设置密码验证策略、删除匿名用户、禁止 root 远程登录、删除测试数据库、重新加载权限表。这是交互式问答,按提示输入 y 或者 n 即可。

这里重点说一下“密码验证策略”这一项。MySQL 8.0 的密码策略分为 LOW、MEDIUM、STRONG 三个等级,LOW 只要求密码长度不少于 8 位,MEDIUM 额外要求包含数字、大小写字母、特殊字符,STRONG 还要检查字典文件。本地开发环境选 LOW 或 MEDIUM 都行,但生产环境必须 MEDIUM 以上。个人开发机别选 STRONG,因为很多时候你只是需要一个临时测试账号,密码强度要求太苛刻反而会拖慢节奏。

脚本执行完以后,root 用户默认只允许本地连接,这个设置必须保留。如果你不小心在脚本里手滑允许了 root 远程登录,那意味着你的数据库暴露在了整个局域网里,非常危险。

4.3 修改 my.cnf 的常用配置项

MySQL 的默认配置对开发环境够用,但有些场景下你还是得改配置文件。比如默认的字符集,如果不改,数据库默认的latin1字符集在存储中文时会出现乱码。这里建议直接改成utf8mb4,它是utf8的超集,能完整支持中文和 emoji 符号。

修改配置文件前先备份原文件,用vim或其他编辑器打开/opt/homebrew/etc/my.cnf(brew 版)或者/etc/my.cnf(dmg 版),在[mysqld]段落中添加或修改:

[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci port=3306 bind-address=127.0.0.1 max_connections=200

character-set-server指定服务端字符集,collation-server指定排序规则,utf8mb4_unicode_ci是比较通用且性能不错的排序规则。bind-address=127.0.0.1的含义是只允许本机访问数据库,这对开发机来说是默认安全配置,不要轻易改成0.0.0.0,除非你真的知道自己在做什么。

修改完配置文件后,需要重启 MySQL 服务才能生效:

mysql.server restart

或者如果你用的是brew services方式:

brew services restart mysql

重启后可以在 MySQL 登录后执行:

SHOW VARIABLES LIKE 'character_set_server';

确认输出结果是utf8mb4,说明配置已经生效。

5. 启动、连接、管理 MySQL 的日常操作

5.1 命令行启停和状态查看

学会在命令行管理 MySQL 服务,是摆脱图形化依赖的第一步。最常用的是这三条命令:

mysql.server start mysql.server stop mysql.server status

mysql.server是 MySQL 自带的启动脚本,无论你是直接跑自带服务还是已经注册到 launchd,这个命令都能对服务进行统一管理。status会报告 MySQL 进程是否在运行并监听 3306 端口。

如果你不确定服务是否真的在监听端口,可以执行:

lsof -i:3306

输出里如果看到mysqld进程占用了 TCP 端口 3306,说明服务正常运行。如果这个命令没有任何输出,说明没有进程监听 3306,服务大概率没起来。这个检查方式比看进程列表更准确,因为它直接验证了端口层面是否就绪。

在 macOS 上还可以通过 launchctl 查看 MySQL 的运行状态,不过一般没必要,用 lsof 就够了。另外提醒一点:mysql.server stop是优雅关闭,会等所有正在执行的查询完成,如果数据库有长时间运行的大查询,关闭过程可能需要几秒甚至几十秒,这是正常现象,别急着杀掉进程。

5.2 root 登录和新建业务账号

日常开发建议建一个业务账号,不要所有项目都用 root。建账号的 SQL 很简单,登录后执行:

CREATE USER 'dev'@'localhost' IDENTIFIED BY 'dev_password'; GRANT ALL PRIVILEGES ON *.* TO 'dev'@'localhost'; FLUSH PRIVILEGES;

这两条语句创建一个本机的dev用户并授予所有数据库的全权限。如果你只想让这个账号操作某个具体的数据库,比如test_db,则改成:

GRANT ALL PRIVILEGES ON test_db.* TO 'dev'@'localhost';

权限细化到库甚至表,是后面多人协作开发时避免误操作的关键。当账号创建完成后,用mysql -u dev -p登录,输入密码验证是否正常。测试完再切回 root 清理测试数据,整个过程就能形成闭环。

新账号连接时可能会遇到无法登录的报错,常见原因有认证插件版本不匹配、防火墙拦截、端口被占用,这些我们将在后面一节统一排查。

5.3 几个高频 SQL 操作

安装好 MySQL 以后,你至少要会几个高频操作才能不卡壳。查看当前所有数据库:

SHOW DATABASES;

创建数据库并指定字符集:

CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

切换数据库:

USE mydb;

查看当前数据库下的所有表:

SHOW TABLES;

查看某个表结构:

DESC users;

这几个命令覆盖面很广,基本能支撑日常开发。等你熟练以后可以进一步了解索引、pdo 预处理、事务等高级特性,那就超出这篇文章的范畴了。

6. 可视化工具怎么选:Workbench 还是其他

6.1 MySQL Workbench:官方工具的优势与注意

MySQL Workbench 是 MySQL 官方推出的图形化管理工具,功能齐全,支持查询、数据导入导出、表结构设计,还能直接可视化查询计划。对新手来说,它最大的优势是文档多、案例多、遇到问题容易搜到解决方案。

下载时同样需要注意 Apple Silicon 版本,Workbench 官网提供了macOS (Apple Silicon)的安装包,认准下载。装完以后打开 Workbench,点击加号添加连接,Hostname 填127.0.0.1,Port 填3306,Username 填root,然后输入密码测试连接。如果测试失败,先按常见问题部分排查服务状态和端口。

有一个容易踩的坑:Workbench 的server list里如果默认选择了/tmp/mysql.sock的 socket 连接方式,而你的 MySQL 配置了 TCP 连接,就可能导致连接失败。本地连接优先使用127.0.0.1,避免 socket 文件路径不一致带来的麻烦。

6.2 Navicat、TablePlus、DBeaver 各有各的好

除了官方 Workbench,市面上还有几款主流的 MySQL 图形化客户端。Navicat 功能强大、界面友好,是很多人付费购买的选择,支持 M 芯片原生运行,但授权费用不低;TablePlus 是一款轻量级且漂亮的客户端,适合日常查询,免费版功能足够使用;DBeaver 免费开源跨平台,支持多种数据库,功能深度也很强,只是界面相对朴素。

我自己的选择标准是这样:临时看一眼数据结构用 TablePlus,写复杂查询和导出导入用 Workbench,如果公司项目里同时用到 MySQL 和 PostgreSQL,那就装 DBeaver 一把梭。工具没有绝对的“最好”,只有适合你工作流的那一款。

还要提醒一句:不要同时装好几个客户端,会搞混连接配置。集中用一款,把连接配置备份好,足够。

6.3 命令行替代方案

图形化工具虽好,但命令行永远是最快的验证方式。你只需要掌握几个参数就能完成日常操作:

mysql -u root -p

这个命令会提示输入密码并进入交互式 shell,在 shell 内部可以执行任意 SQL 语句。退出用exit;\q

如果需要把 SQL 语句直接作为参数执行,可以用-e参数:

mysql -u root -p -e "SHOW DATABASES;"

需要连接远程数据库时:

mysql -h 192.168.1.10 -P 3306 -u dev -p

-h指定主机,-P指定端口,-u指定用户名,-p提示输入密码。这些参数覆盖了本地和远程连接的主要场景。命令行适合做快速验证和脚本化操作,图形化工具适合做深度管理和数据可视化,二者配合才是完整的工作流。

7. 常见问题与排查技巧实录

7.1 问题速查表

我把自己在 M 芯片 Mac 上装 MySQL 遇见的常见问题整理成一张速查表,这比零散地翻论坛要高效得多。

问题现象可能原因解决方案
mysql: command not foundMySQL 可执行文件不在 PATH 中~/.zshrc添加export PATH="/usr/local/mysql/bin:$PATH"source ~/.zshrc
启动后立即退出,无错误提示数据目录权限异常检查/opt/homebrew/var/mysql目录的所有者,确保为当前用户或 mysql 用户
ERROR 2002 (HY000) Can't connect through socket服务未启动执行mysql.server start启动服务
ERROR 1045 (28000) Access denied for user密码错误或认证插件不兼容重置密码;或改用caching_sha2_password兼容的客户端
图形工具连接超时端口未监听或防火墙拦截执行lsof -i:3306检查端口状态;关闭 macOS 防火墙测试
Workbench 连接提示认证插件错误Workbench 版本过旧升级到官网最新版,或改用 mysql_native_password
安装包无法打开提示已损坏下载文件不完整或签名失效重新从官网下载,检查是否选中 ARM 版本

这张表覆盖了从安装、启动、连接到认证插件的大多数问题。在动手处理之前,先看lsof -i:3306的结果,能帮你快速判断问题出在“服务层面”还是“连接层面”。

7.2 忘了 root 密码怎么重置

忘了 root 密码是几乎每个 MySQL 使用者都会经历的事情,步骤不复杂,但容易让人紧张。先说结论:只要你能登录操作系统的终端,MySQL 的 root 密码就能重置。

第一步,停止当前 MySQL 服务:

mysql.server stop

第二步,在后台以跳过权限表的方式启动 MySQL:

mysqld_safe --skip-grant-tables &

这一步启动后 MySQL 会忽略所有权限检查,任何人都可以免密登录。注意这个操作只适合本机临时恢复场景,务必在恢复后立即关闭。

第三步,登录并修改密码:

mysql -u root

进入 MySQL shell 后:

FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

第四步,退出并重启正常模式:

exit; mysql.server restart

重启完以后用新密码登录验证一下。整个流程的关键是mysqld_safe --skip-grant-tables启用后,必须在FLUSH PRIVILEGES之后才能执行ALTER USER,否则 MySQL 可能报错说不存在这个用户。

7.3 dmg 和 brew 共存导致的数据目录混乱

这是我在自己的 M1 Mac mini 上真实遇到过的情况:之前用 dmg 装过一次 MySQL,后来图方便又用 Homebrew 装了一次,结果两个版本共用了同一个数据目录,服务经常起不来。

解决思路很暴力但有效:先停掉所有 MySQL 进程,然后选一个版本保留,把另一个彻底卸载。保留版本的判断标准很简单:哪个版本的数据是你当前项目需要的,就留哪个。如果你两个版本的数据都想要,先备份其中一个的整个数据目录,再执行卸载重装。

具体备份方法,直接把数据目录打包即可:

tar -czvf mysql_backup.tar.gz /opt/homebrew/var/mysql

恢复时把压缩包解压回原路径。MySQL 的数据目录是可以整体迁移的,只要版本大版本一致,把目录复制过去就能直接用,连导入导出都不需要。

在卸载另一个版本时,注意清楚删除相关的 launchd 配置文件,比如/Library/LaunchDaemons/com.mysql.mysql.plist,否则系统开机时会试图启动一个已不存在的 MySQL 服务。

7.4 老客户端连不上:认证插件和字符集问题

这个问题在 MySQL 8.0 发布后变得非常普遍。MySQL 8.0 默认使用caching_sha2_password认证插件,而很多老版本的工具只支持 MySQL 5.x 时代的mysql_native_password。所以在连接报错时如果提示Authentication plugin 'caching_sha2_password' cannot be loaded,说明客户端太老,不兼容新插件。

有两种解决办法。第一种是升级客户端工具到最新版,比如 Navicat、Workbench 都早已支持新插件,这是最推荐的方式。第二种是修改 MySQL 用户的认证方式,让它兼容老客户端:

ALTER USER 'dev'@'localhost' IDENTIFIED WITH mysql_native_password BY 'dev_password';

执行完再连接就能成功。需要说明的是,mysql_native_password插件在 MySQL 8.0 中依然可用但已标记为废弃,新项目最好坚持使用默认插件并升级客户端,只是在面对老系统时用第二种方案临时过渡。

另一个问题就是字符集。如果你创建库表时不指定字符集,默认可能是latin1,导致中文显示乱码。排查方法:

SHOW VARIABLES LIKE '%character%';

确认所有字符集变量都是utf8mb4或与你的需求一致,不一致就按照第四节的方式修改my.cnf并重启。

写在最后

这道安装流程我前前后后带朋友装过不下十次,自己也在 dmg 和 brew 之间反复横跳过。如果你问我哪条路最省心,我的回答是:新手用 dmg,装的时候把密码记清楚,装完直接把开机自启关掉;老手用 brew,一条命令装完,再用mysql_secure_installation收尾。不要两条路混着走,那是给自己挖坑。

装完之后建议你立刻做两件事:第一,把 root 密码放进密码管理器,并给日常项目单独建一个低权限账号;第二,用mysqldumptar把数据目录备份一次,摸清备份恢复的流程,别等项目数据丢了才想起来补课。

MySQL 在 M 芯片 Mac 上已经非常成熟了,安装这件事本身并不难,难的是遇到问题后能不能迅速定位。欢迎在评论区分享你自己的踩坑记录,尤其是那种我在速查表里没写到的“偶发问题”,我也跟着学习一下。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 2:46:08

IntelliJ IDEA社区版:免费轻量Java开发IDE完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/12 2:46:07

Java并发队列全解析:从BlockingQueue到线程池选型实战

聊到Java里的Queue,很多人第一反应是“这不就是个队列嘛,LinkedList也能用”。但真正到了并发场景,或者面试被问到“线程池的阻塞队列怎么选”时,才发现这里面水很深。我见过不少生产事故,明明线程池参数看着没问题&am…

作者头像 李华
网站建设 2026/9/12 2:45:46

从VSCode插件到Electron独立应用:打字游戏架构改造实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/12 2:45:39

MCP协议:AI工程化中的服务契约与工具治理标准

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/12 2:44:15

Windows上通过WSL2部署vLLM并运行Qwen3-8B-FP8完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/12 2:43:47

计算机组成原理面试高频考点与答题框架全攻略

每年保研和考研复试,计算机组成原理这门课都是让很多人头疼的硬骨头。笔试还好说,套路固定,刷题就能过,但面试完全不一样——考官会当面抛出一个又一个概念,盯着你的回答层层追问,直到你露出破绽为止。我当…

作者头像 李华