简介:面向Mac操作系统的MySQL 5.7.11安装与卸载完整指南,适合需要在macOS环境中部署数据库,或遭遇安装异常、反复失败后希望彻底清理环境的开发人员、运维工程师及入门学习者。内容结合真实操作经验,既说明如何获取官方磁盘镜像安装包,也强调安装时生成的临时根账户密码必须记录,并梳理了通过终端进入MySQL二进制目录、完成密码修改及登录验证的流程。卸载部分给出逐条执行的命令行清理清单,涵盖程序主目录、开机启动组件、偏好设置、安装收据与缓存等易残留位置,同时建议检查主机配置文件和系统守护进程目录,防止旧版本影响重新安装。资源为单个PDF文档,大小约47KB,信息密度高,可作操作备忘录或排错手册。目前已有1570人学习使用,适合需要干净卸载、重装MySQL或避免安装陷阱的用户参考。
1. 先说清楚:正在找 Mac 安装和卸载 Mysql5.7.11 的方法,多半是遇到了老项目或旧环境还原的硬需求
可 5.7.11 这个版本号卡得很死:很多老项目的 SQL 写法、存储过程、索引结构都是按 5.7 时代的习惯做的,直接上 8.0 之后ONLY_FULL_GROUP_BY、认证插件、甚至utf8mb4默认排序规则的变化都会让日常联调开始翻车。另一类情况是手头有一份当年的备份文件,数据目录是用 5.7.11 初始化的,换新版本 MySQL 根本不认。
这篇内容解决这样几个具体问题:在 Mac 上把 MySQL 5.7.11 装起来并完成最基本的三项配置,以及在不需要它时把它连同隐藏残留一起卸干净。适合的人群很明确——老项目需要本地复现的开发者、维护历史系统的工程师,以及被 8.0 劝退想退回 5.7 系列的使用者。它不是一篇科普,每一步都能直接执行。
2. 安装前先定路线:官方 dmg 还是 Homebrew 装 mysql@5.7
安装 MySQL 5.7.11 之前,最重要的不是下载动作,而是确定用什么方式装。macOS 上最常用的软件包管理工具是 Homebrew,但它给不了你真正想要的 5.7.11:brew install mysql@5.7拿到的是 5.7 系列的最新补丁版,版本号和 5.7.11 差着一大截。如果你的目标只是「接近 5.7 的体验」,Homebrew 够用;如果要精确复现 5.7.11 这个版本,唯一可靠的路径是 MySQL 官方归档里的 dmg 安装包。
2.1 先做三个检查:处理器架构、系统版本、3306 端口状态
很多人在 Mac 上装 MySQL 翻车,不是因为命令不会写,而是没有提前确认机器环境。5.7.11 是 2016 年前后的版本,当时的安装包只针对 Intel 架构和 macOS 10.10/10.11 做了适配,放到今天的 Apple Silicon 机器上能不能跑,得先看清楚。
# 1. 查看处理器架构:x86_64 是 Intel,arm64 是 Apple Silicon uname -m # 2. 查看 macOS 大版本号 sw_vers # 3. 检查 3306 端口是否已经被占用(如果有输出,说明已有 MySQL 在跑) lsof -i :3306第一条命令输出x86_64时,后续安装会顺利很多;输出arm64也不要慌,装是能装,但要注意 Rosetta 2 是否已安装,这在第 5 章避坑部分会单独讲。sw_vers是确认系统版本,如果你的 Mac 已经升级到较新的大版本,安装器在权限弹窗环节会多几道确认。最后一条lsof -i :3306是很多新手最容易忽略的:机器上其实已经通过 Docker、虚拟机或老版本 MySQL 占用了 3306,新装的服务根本起不来,排查半天还以为是安装包坏了。
这三个检查做完再动手,后面至少能避开一半的坑。尤其是端口检查,我自己的习惯是安装前和卸载后各跑一次,这两次输出应该都是干净的,才算这个环节真正结束。
2.2 用官方 dmg 安装 MySQL 5.7.11:最小执行步骤
官方 dmg 是唯一能拿到精确 5.7.11 的方式。去 MySQL 官网的归档区找到mysql-5.7.11对应的 macOS 安装包,文件是.dmg格式,双击挂载后里面是一个.pkg安装器。整个安装过程不需要写任何命令,但有几个细节需要留意。
# dmg 安装完成后,先验证安装路径存在 ls -la /usr/local/mysql # 再验证命令行客户端版本 /usr/local/mysql/bin/mysql --version安装器默认会把 MySQL 装到/usr/local/mysql,这个路径实际是个软链接,指向具体版本目录,比如/usr/local/mysql-5.7.11-...这样的名字。pkg 安装器同时还会做三件事:把/usr/local/mysql/bin写进系统的 PATH 配置、安装一个名为 MySQL 的偏好设置面板、注册一个开机启动的 launchd 服务。这些副作用在你卸载的时候都会变成包袱,稍后第 4 章逐个处理。
安装到倒数第二步时,安装器会引导你设置 root 用户的密码。这一步建议直接设置一个你记得住的强密码,MySQL 5.7 默认开启了密码校验策略,太简单的密码(比如123456)会直接被拦截。装完不要急着关窗口,稍微看一眼偏好设置面板——如果面板里能看到绿色运行状态,说明服务已经自动启动了。如果面板显示停止状态,用命令启动:
sudo /usr/local/mysql/support-files/mysql.server startmysql.server是官方自带的启停脚本,start参数负责拉起 mysqld 进程。这一条命令会在后面反复用到,尤其是偏好设置面板在新系统上抽风的时候,它是最后的可靠入口。
2.3 用 Homebrew 装 mysql@5.7:命令和它的两个限制
如果对「精确 5.7.11」没有执念,只是想让项目跑在一个 5.7 系的环境里,Homebrew 路线更省事。但这里我要把话先说清楚,因为太多人在这一步踩坑后跑来问:为什么执行完还是找不到 mysql。
# 先更新软件源信息,避免拉到旧的包元数据 brew update # 安装 5.7 系列的 formula brew install mysql@5.7 # 启动服务并设置为开机自启 brew services start mysql@5.7 # mysql 命令可能不在 PATH 里,需要手动补上 export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"mysql@5.7在 Homebrew 里是 keg-only 的,意思是它不会被自动链接到/usr/local/bin,你必须手动加 PATH 才能直接用mysql命令。这其实是 Homebrew 刻意为之,因为它知道同一台机器上可能同时存在多个 MySQL 大版本,自动链接会打架。很多人执行完brew install后输入mysql --version报 command not found,就是这个原因,不是安装失败。
另一个限制刚才提过:mysql@5.7不是 5.7.11,而是 5.7 系列的最新补丁版。绝大多数情况下项目从 5.7.11 迁移到 5.7 最新版没有兼容问题,但如果你遇到的是需要精确复现的 bug,或者是拿旧数据目录直接挂载的场景,Homebrew 就解决不了了。另外,brew 安装过程中如果卡在下载或更新源这一步,多半是网络和源的问题,先把 brew 源切换成国内镜像,再执行brew update,基本能解。
3. 装完必须配置的三件事:临时密码、my.cnf、自启与启停
安装完成只是第一步,离「能正常干活」还差三件事:确认 root 能登录、把适合项目的参数写进 my.cnf、确定服务是靠自启还是手动控制。这三件事按顺序做,每件都有它自己的坑。
3.1 拿到临时密码并登录:从 err 日志里找线索
用 dmg 安装器安装时已经设置过 root 密码的,直接跳到登录验证。如果你是用通用包方式部署,或者安装过程中跳过了密码设置,那么 root 的初始密码是随机生成的,只出现一次,写在 MySQL 的错误日志里。
# MySQL 错误日志默认在数据目录下,文件名以主机名开头 sudo cat /usr/local/mysql/data/*.err | grep "temporary password"输出结果类似A temporary password is generated for root@localhost: xxxxxxxx,后面的字符串就是临时密码。拿到后立刻登录并修改:
mysql -uroot -pALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPass123!';注意ALTER USER这个语法在 5.7.11 里完全可用,它是 5.7.6 之后推荐的写法,比老的SET PASSWORD = PASSWORD('...')更规范。执行时如果报 ERROR 1819,是因为密码策略校验失败,密码需要包含大小写字母、数字和特殊字符。这个策略一会儿在 my.cnf 里可以调低,但我不建议你直接关掉,本地开发环境保持默认就好,省得后面被安全扫描工具找麻烦。
3.2 修改 root 密码和新建业务账号:SQL 与权限参数
root 只是管理入口,日常项目连接不应该用 root。这一步创建一个权限受控的业务账号,避免将来项目代码里到处是 root 密码。
-- 创建一个只允许本机访问的业务账号 CREATE USER 'app'@'127.0.0.1' IDENTIFIED BY 'AppPass123!'; -- 授权:只给业务库的增删改查,不给全局权限 GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app'@'127.0.0.1'; -- 让授权生效 FLUSH PRIVILEGES;这里有两个参数值得说明。'app'@'127.0.0.1'比'app'@'localhost'更严格,它只接受 TCP 回环连接,不走 socket 文件,这在区分本地服务来源时很有用。mydb.*限定了数据库范围,授权语句只影响 mydb 下的表。如果你创建账号后客户端连不上,先检查授权里是不是漏了FLUSH PRIVILEGES,再检查账号的 host 是否和连接方式匹配——很多老项目用的连接串写的 localhost 会走 socket,而账号只授权了 127.0.0.1,就会报 Access denied。
另外,5.7.11 这个版本默认使用的认证插件是mysql_native_password,主流客户端都兼容,暂时不用担心 8.0 那种caching_sha2_password连不上的问题。这也是老项目愿意留在 5.7 的另一个原因。
3.3 配置 my.cnf:字符集、sql_mode、内存三个必调位置
MySQL 在 mac 上默认可能没有 my.cnf 文件,它会用编译时的内置参数启动。为了让老项目跑得顺畅,我一般手动创建/etc/my.cnf。注意这个路径需要管理员权限,以及它在整个 MySQL 配置文件读取顺序里排在很靠前的位置。
[mysqld] # 字符集:老项目如果还在用 latin1,这里直接决定乱不乱码 character_set_server = utf8mb4 collation_server = utf8mb4_general_ci # sql_mode:去掉 ONLY_FULL_GROUP_BY,老项目最常见的报错来源 sql_mode = STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION # InnoDB 缓冲池:内存小于 8G 的 Mac 建议 256M,别贪大 innodb_buffer_pool_size = 256M # 表名大小写敏感:从 Windows 迁过来的项目需要设为 1 lower_case_table_names = 0character_set_server和collation_server是配套设置的,只改一个的话建库时还会走默认值。sql_mode是最值得抄的参数:5.7 默认包含ONLY_FULL_GROUP_BY,这个模式对GROUP BY的写法要求极严格,很多老项目当年在 5.6 上写得好好的,一迁 5.7 就被这个参数干趴下。上面这串 sql_mode 我刻意去掉了它,保留了其他几项约束,是本地开发比较舒服的折中。
lower_case_table_names是另一个暗坑:macOS 默认文件系统大小写不敏感,所以这个参数默认是 0;但如果你手里的数据是从 Windows 服务器导出的,Windows 上表名不区分大小写,迁移到 mac 上如果继续用 0,查询时表名字母大小写一不一致就报找不到表。从 Windows 迁来的项目,这里改成 1 能少掉半夜的报警电话。改完配置后重启服务:
sudo /usr/local/mysql/support-files/mysql.server restart3.4 把 MySQL 配置成可控的自启服务:三种方法的取舍
dmg 安装器默认注册了开机自启,方式是通过 launchd 加载一个以com.oracle.oss.mysql开头的 plist 文件。但很多人并不想要开机自启,尤其是本地开发机,MySQL 后台常驻既吃内存又容易被安全扫描报风险。这块我直接给三种方式对比。
| 方式 | 启动命令 | 适合场景 |
|---|---|---|
| mysql.server 脚本 | sudo mysql.server start/stop | 手动控制,最通用 |
| launchd 系统服务 | sudo launchctl load/unload + plist 路径 | dmg 安装默认行为,但新版 macOS 经常报错 |
| brew services | brew services start/stop mysql@5.7 | Homebrew 装的最省心 |
我自己倾向于第一行:手动用mysql.server控制。原因很实在,launchd 在新版 macOS 上对 plist 的权限和签名要求越来越严格,你装完 dmg 后发现服务确实自启了,但想停掉时launchctl unload经常给出奇怪的报错;而mysql.server就是一个脚本,不依赖系统 Launch 系统,什么时候想让它跑就 run,想停就停。配合一个 alias,日常使用其实很顺:
alias mysql_start="sudo /usr/local/mysql/support-files/mysql.server start" alias mysql_stop="sudo /usr/local/mysql/support-files/mysql.server stop"4. 卸载 MySQL 5.7.11:从进程、文件到隐藏残留的完整清单
卸载比安装更容易出问题,因为 dmg 安装器只负责「放进去」,卸载时却不会帮你「清干净」。图形界面上把 MySQL 拖进废纸篓是没用的——mysql 的安装位置不在应用程序目录,而且大量运行文件和配置散落在系统各个角落。不按顺序清理的话,结果就是:你以为卸完了,重启后 MySQL 又神秘复活,或者装新版本时报端口被占用。
4.1 先停进程再删文件:卸载顺序为什么重要
有人图省事,直接sudo rm -rf /usr/local/mysql删目录,然后发现 mysqld 进程还在跑,数据文件被删了但它还握着文件句柄写日志,把磁盘空间越撑越大。正确顺序一定是先停服务再动文件。
# 第一步:停服务(用脚本或 launchctl 均可,脚本最稳) sudo /usr/local/mysql/support-files/mysql.server stop # 第二步:确认 mysqld 进程已经消失 ps aux | grep mysqld # 第三步:删除安装目录和数据目录 sudo rm -rf /usr/local/mysql sudo rm -rf /usr/local/mysql-* 第三步的命令里,`/usr/local/mysql-*` 用通配符把类似 `mysql-5.7.11-osx10.10-x86_64` 这类具体版本目录一并删掉。注意这一步会连同数据目录一起删除,如果你里面还有需要保留的库,先 mysqldump 导出再执行,这是唯一的后悔药。删完目录后先不要停,下面还有几处隐藏残留。 ### 4.2 需要手动清理的隐藏残留:launchd plist、PATH 配置、偏好设置 dmg 安装时写入系统的辅助文件,官方卸载文档和网上教程很少一次性列全。我自己在 Mac 上卸载 MySQL 时会按下面的清单逐个清理,少任何一个都可能留下后患。 ```bash # 1. 删除开机自启的 launchd 配置(文件名可能随版本略有差异) sudo rm -rf /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist # 2. 删除系统 PATH 配置(安装器写入的 /usr/local/mysql/bin 路径来源) sudo rm -f /etc/paths.d/mysql # 3. 删除系统偏好设置面板 sudo rm -rf /Library/PreferencePanes/MySQL.prefPane # 4. 删除安装器留下的收据信息(/Library/Receipts 里的 .pkg 记录) sudo rm -rf /Library/Receipts/mysql*第一项最关键。如果不删 plist,系统 launchd 会在你删完目录后依然尝试拉起 mysqld,日志里疯狂报错,下次开机又自动触发。第三项偏好设置面板很多人容易漏,它不会被 dmg 卸载器带走,就算你重装了别的 MySQL 版本,旧的面板也可能在系统设置里报错。第四项是安装包收据,不删也不会影响使用,但会干扰系统对已安装软件包的识别,建议顺手清掉。
以上每一步都需要sudo,而且按照现在的 macOS 安全机制,删除 LaunchDaemon 下的文件大概率会被要求输入管理员密码,属正常现象。
4.3 Homebrew 方式卸载的差异命令:uninstall 之后还要 purge
如果当初是走 Homebrew 装的,卸载路径略有不同。brew uninstall只是卸载软件本体,数据目录、配置文件、启动服务注册信息都还在。
# 停服务并取消自启注册 brew services stop mysql@5.7 # 卸载软件本体 brew uninstall mysql@5.7 # 清理旧版本残留文件 brew cleanup # 卸载数据目录(默认存放在 /usr/local/var/mysql 或 /opt/homebrew/var/mysql) sudo rm -rf /usr/local/var/mysqlbrew cleanup的作用是清理 Homebrew 缓存的旧版本压缩包,不然下次brew install mysql@5.7时很可能从缓存里复用旧文件,闹出诡异问题。数据目录单独删除是必须的,Homebrew 遵循 keg-only 原则,软件卸载时绝不会碰你的数据,这是设计使然,需要手动决定数据去留。
如果你曾经为了让mysql命令全局可用而手动软链过路径,卸载后还需要检查一下/usr/local/bin/mysql是否还存在,存在就一并删掉:
ls -la /usr/local/bin/mysql4.4 验证卸载干净:三个命令确认没有进程、没有监听、没有残留文件
卸载完成后的验证比卸载本身更重要,因为残留问题不会立刻显示,往往在你下一次安装时才跳出来。我用一套固定的验证命令:
# 1. mysql 命令应该找不到了 which mysql # 2. mysqld 进程应该不存在 ps aux | grep mysqld # 3. 3306 端口应该不再有进程监听 lsof -i :3306 # 4. 常见残留目录应该返回 No such file ls -la /usr/local/mysql ls -la /etc/my.cnf四条命令的输出全为空,才算卸载完成。特别说明一下lsof -i :3306:有时候你卸载了 MySQL,但 3306 端口还是被占用,这可能是 Docker 容器里也跑着 MySQL,或者是 launchd 残留还没有完全清理。这一步能帮你区分「MySQL 没卸干净」和「其他服务占用了端口」两种完全不同的情况。
5. 避坑:Mac 上安装与卸载 5.7.11 最容易翻车的几个位置
安装和卸载 MySQL 5.7.11 的坑,集中在兼容性和残留这两个方向上。下面这几条都是高频场景,按「现象 → 原因 → 解决」描述,你可以直接对照排查。
5.1 安装包打不开,提示“已损坏”:Gatekeeper 的签名拦截
现象:双击下载好的 5.7.11 dmg,挂载后发现里面的 pkg 打不开,提示“mysql-5.7.11.pkg 已损坏,无法打开”。
原因:这个版本的安装包是 2016 年签名的,新版本 macOS 的 Gatekeeper 校验规则已经大幅收紧,旧签名不被自动信任。所谓“损坏”其实是系统层面的拒绝,不是文件真的坏了。
解决:在访达里找到 pkg 文件,先右键选「打开」,弹出的确认框里多点一次打开;如果还是不行,使用命令清除隔离属性:
xattr -cr /path/to/mysql-5.7.11-osx*.pkgxattr -cr的作用是递归删除扩展属性,com.apple.quarantine属性就是 Gatekeeper 判断来源的依据。执行完再双击,基本都能正常弹出安装向导。不要一上来就关 SIP,那是过度反应。
5.2 Apple Silicon 上运行 x86_64 版:偏好设置面板打不开,mysqld 启动即退出
现象:M 芯片的 Mac 上,dmg 安装过程正常,但系统设置里的 MySQL 面板打不开,或者面板显示绿色但mysql -uroot -p连接直接拒绝;命令行启动时 mysqld 也没有报出具体错误就退出。
原因:5.7.11 没有提供 arm64 架构的 mac 安装包,你装的 pkg 是 x86_64 的,在 Apple Silicon 上需要借助 Rosetta 2 翻译层运行。偏好设置面板这种 GUI 组件对架构最敏感,命令行 mysqld 反而能跑,但前提是环境里已装好 Rosetta 2。
解决:先确认 Rosetta 2 存在,再改用命令行启动:
# 确认 Rosetta 2 已安装 /usr/bin/arch -x86_64 echo "x86_64 ok" # 强制以 x86_64 模式启动 mysql.server arch -x86_64 sudo /usr/local/mysql/support-files/mysql.server startarch -x86_64是显式指定进程以 x86_64 指令集运行,避免 shell 默认的解释层设置干扰。如果这个方案能启动,后续所有 mysql 客户端命令也建议在同一个arch -x86_64前缀下执行,否则可能遇到 mysql 客户端连接时的幻影问题。性能上会有损耗,但没有到不能用的程度,本地开发完全够。需要说明的是这只是权宜之计,如果项目允许升级到 5.7 系列较新版本,官方后续版本在 Apple Silicon 上的兼容性明显改善。
5.3 卸载后 3306 端口还在监听:launchd 残留自动拉起 mysqld
现象:按照第 4 章流程删完目录,lsof -i :3306却仍然有输出,而且 mysql 进程路径显示来自/usr/local/mysql,但那个目录明明已经删了,或者进程反复出现,杀掉又自动复活。
原因:plist 文件没有被清理。macOS 的 launchd 只要还加载着这个配置,就会周期性检查并拉起对应的程序。因为主程序文件没了,系统可能反复尝试执行失败的路径,也在极端情况下从缓存里拉起残留的进程副本。
解决:别再试图用kill -9对抗,先让 launchd 停止加载,再把 plist 从磁盘删掉:
# 卸载 LaunchDaemon 中的 MySQL 配置 sudo launchctl bootout system/com.oracle.oss.mysql.mysqld.plist # 再删除 plist 文件本体 sudo rm -f /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plistlaunchctl bootout是 macOS 10.11 之后的推荐写法,老式launchctl unload在很多新系统上会返回奇怪的错误码。bootout 执行后,再配合ps aux | grep mysqld检查,通常就不会再出现进程了。
5.4 登录时报 ERROR 1045:临时密码过期或密码策略拦截
现象:安装后首次登录,输入安装器设置的密码或从 err 日志找到的临时密码,MySQL 返回ERROR 1045 (28000): Access denied for user 'root'@'localhost'。
原因:两种常见情况。一是临时密码存放时间超过系统password_lifetime导致失效;二是 dmg 安装器在最后一步弹窗里让你设置的密码,和实际生效的密码不是同一个——安装器中途有一个步骤如果被跳过或取消,密码不会写入。另外一个原因是 5.7.11 的 validate_password 策略默认要求密码包含大小写和特殊字符,设置的密码太弱会被拒绝写入。
解决:如果确定密码没记错,直接走跳过权限表的紧急模式:
# 停止服务 sudo mysql.server stop # 跳过权限检查启动,同时禁用网络连接,避免空密码暴露 sudo mysqld --skip-grant-tables --skip-networking & # 直接免密登录 mysql -uroot进入mysql>提示符后,先执行FLUSH PRIVILEGES;刷新权限缓存,再用ALTER USER重置密码。这个方法只适合紧急恢复,用完立刻正常重启服务。注意--skip-networking参数是必须的:跳过权限表后,任何人都能以 root 身份网络连接你的实例,本地开发也必须封死这条路。
5.5 brew upgrade 把 5.7 升到 8.0:数据目录不兼容导致服务起不来
现象:用 Homebrew 装了 mysql@5.7,某天执行brew upgrade后没有仔细看输出,再次启动时提示数据目录版本不兼容,服务无法启动。
原因:brew upgrade升级全部 formula,mysql@5.7如果已经从列表移除或被迫升级到mysql8.0,数据文件的文件头都不同,8.0 进程不会加载 5.7 的数据目录。
解决:这里没有后悔药,8.0 启动失败不会损坏数据,但直接切回 5.7 仍然可以继续启动;关键是预防。
# 锁定 5.7 版本,后续 brew upgrade 不再动它 brew pin mysql@5.7 # 如果升级已经发生过,确认电脑里是否还保留 5.7 的 formula 缓存 brew list | grep mysql如果brew list里已经完全没有 mysql@5.7,就需要重新brew install mysql@5.7,然后用旧数据目录启动。数据文件本身没有跟上一次启动的 MySQL 版本强绑定到无法恢复,只是需要在正确的 5.7 版本进程里再打开一次,并把重要内容用 mysqldump 导出来备份。
6. 进阶:一台 Mac 上同时跑多个 MySQL 版本,以及一个可靠的工作习惯
偏执地锁死 5.7.11 的人,往往不止需要这一个版本。同一个项目可能还有一套 8.0 的库要联调,这时候在同一台 Mac 上跑两个 MySQL 实例就非常实用,而且可以用端口天然隔离,互不干扰。
# 第二个实例的数据目录和配置单独准备 sudo mkdir -p /usr/local/mysql-8.0/data sudo chown -R _mysql:_mysql /usr/local/mysql-8.0 # 用独立的 my.cnf 启动第二个实例 sudo /usr/local/mysql-8.0/bin/mysqld \ --defaults-file=/usr/local/mysql-8.0/my.cnf \ --port=3307 \ --socket=/usr/local/mysql-8.0/mysql.sock \ --datadir=/usr/local/mysql-8.0/data &这里的关键参数是--port=3307,它让第二个实例绕开默认的 3306 端口,两个 MySQL 可以同时存活,连接时手动指定端口即可:
mysql -h127.0.0.1 -P3307 -uroot -p多版本共存的验证逻辑也很简单:连上哪个实例就执行一遍状态检查,确认它确实是你要的那个版本。
SELECT VERSION(); SHOW VARIABLES LIKE 'port';我的个人习惯是,每次安装完这种老版本数据库,都会把 root 初始密码、配置文件路径、端口号顺手记到项目目录下的 README 里,而不是记在聊天工具或备忘录中。项目成员的 Mac 上遇到过太多次「我记得密码是……」的翻车现场,一个几十行的说明文档比什么都可靠。版本敏感型的老项目,我还会在配置里固定bind-address=127.0.0.1,保证 MySQL 只服务本机。
如果你看完这篇决定动手,建议把第 2 章到第 4 章的命令原样执行一遍,先用 dmg 安装 5.7.11,跑通后再完整卸载一次,等于给 Mac 做了一次安装卸载的预演。预演之后再装你真正要用的版本,整个流程就心里有底了。希望帮到你。
本文还有配套的精品资源,点击获取