Mac 上使用 Homebrew 安装 MySQL 8.4 和 MySQL 5.7 共存

在学习 github 上的一些项目时,不同项目使用的 mysql 版本不一样,下面分享下我是如何在 macOS 上使用 Homebrew 同时安装并运行 MySQL 8.4MySQL 5.7的,包括修改端口避免冲突的步骤。


安装 Homebrew

国内安装homebrewHomebrewCN

安装完成后更新:

sql 复制代码
brew update

搜索可用 MySQL 版本

sql 复制代码
brew search mysql

搜索结果:

perl 复制代码
mysql         # 最新稳定版(8.4)
mysql@8.4     # 8.4 版本
mysql@5.7     # 5.7 版本

我建议安装 mysql8 和 mysql5.7,因为mysql Workspace LTS目前只兼容到 mysql 8.0,但我比较喜欢尝试,所以我下面以 8.4 为例。

安装 MySQL 8.4 和 MySQL 5.7

kotlin 复制代码
brew install mysql@8.4
brew install mysql@5.7

配置端口(避免冲突)

默认情况下,两个 MySQL 实例都会占用 3306 端口,因此需要修改一个版本的端口。

假设我们修改 MySQL 5.7 的端口为 3307

编辑配置文件

使用 vi 或者 sublime 等文本编辑器,使用 UTF-8 编码编辑。

perl 复制代码
vi /usr/local/etc/my.cnf@5.7

[mysqld] 段添加:

ini 复制代码
[mysqld]
port=3307

保存退出(vi 使用:wq,nano 使用Ctrl + O 保存,Ctrl + X 退出)。

如果找不到 my.cnf@5.7,可以自己创建,并确保 MySQL 5.7 启动时读取它。

启动两个版本

perl 复制代码
# 启动 MySQL 8.4(默认 3306)
brew services start mysql@8.4

# 启动 MySQL 5.7(端口 3307)
brew services start mysql@5.7

检查运行状态:

复制代码
brew services list

连接到不同版本

使用命令行连接:

css 复制代码
# MySQL 8.4
mysql -u root -p -P 3306

# MySQL 5.7
mysql -u root -p -P 3307

如果使用图形化工具(如 Mysql Workspace、Navicat),分别设置端口即可。

停止服务

arduino 复制代码
brew services stop mysql@8.4
brew services stop mysql@5.7

数据目录位置

Homebrew 默认会将不同版本的数据目录分开:

kotlin 复制代码
/usr/local/var/mysql@8.4
/usr/local/var/mysql@5.7

请勿共用数据目录,否则会导致数据损坏。

总结

通过 Homebrew 安装并配置端口,我们可以在一台 Mac 上同时运行多个 MySQL 版本。

这种方式适合需要在同一台机器上测试不同版本兼容性的开发场景。

另外也可以使用 Docker 来同时运行多个 Mysql,但 Docker 要预留磁盘空间,我的 500G 的硬盘不够用,所以我没有使用Docker 来处理这种情况。

相关推荐
GetcharZp12 分钟前
别再盲目用 OpenCV 读图了,这才是 CV 预处理的终极杀手锏!
后端
kyriewen23 分钟前
Git Commit 前自动修复代码风格?配置 Husky + lint-staged,从此 CR 只聊逻辑
前端·git·面试
小和尚同志32 分钟前
AI 自动化测试探索(一):Playwright MCP
前端·人工智能·aigc
老马识途2.01 小时前
在AI的帮助下理解spring的启动过程
java·前端·spring
徐小夕1 小时前
Loop Engineering 深度解析与实战指南(全网最全)
前端·算法·github
运筹vivo@2 小时前
Python ContextVar 底层机制与内存模型拆解
前端·数据库·python
#麻辣小龙虾#3 小时前
基于vue3.0开发一款【固废与废气运维管理系统】(支持源码)
前端·vue.js·vue3
Cosolar3 小时前
Docsify零构建文档站完全指南:从快速搭建到企业级部署
前端·开源·github
weixin_471383033 小时前
Taro-02-页面路由
前端·taro
星栈独行3 小时前
Makepad 应用如何读文件、调接口、保存数据
前端·程序人生·ui·rust·github