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 来处理这种情况。

相关推荐
Hyyy2 分钟前
流式渲染用react-markdown还是Vercel/Streamdown
前端
geovindu16 分钟前
java:Abstract Factory Pattern
java·开发语言·后端·设计模式·抽象工厂模式·创建型模式
geovindu20 分钟前
java: Factory Method Pattern
java·开发语言·后端·设计模式·工厂方法模式·创建型模式
voicelen23 分钟前
一通电话背后有多少角色?我拆了 Voicelen 的调度台给你看
后端
用户80172204163928 分钟前
BarQode:C# 条码二维码生成库
后端
风中的小甜瓜32 分钟前
ASP.NET Page 那点事
java·前端·asp.net
考虑考虑34 分钟前
kafka4安装
后端·kafka·自动化运维
木西34 分钟前
告别机械重复:使用 Node.js + Playwright 构建 24 小时全自动测试网领水脚本
前端·javascript·node.js
orient41 分钟前
慢查询优化 10 招:从 EXPLAIN 到索引重建
后端
西柚小萌新1 小时前
【论文写作】--LaTeX详细入门教程2
前端·html