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

相关推荐
IT_陈寒13 小时前
Python的多线程就是个假把式,我算是体验到了
前端·人工智能·后端
码事漫谈13 小时前
如果 AI 要圈养人类,它可能不需要笼子
后端
OpenTiny社区14 小时前
【直播分享】GenUI SDK 技术公开课第二讲 | GenuiChat 核心配置深度解析
前端·github
计算机魔术师14 小时前
kernel.org 每天 600 万次请求,98% 不是人点的
前端
newerp14 小时前
Golang 调度循环:Go runtime 如何永不停歇地找人干活
后端·程序员·go
今日无bug14 小时前
从0到1手撕流式输出:Vue3 + Vite 实现 LLM 流式响应全解析
前端·vue.js·vite
明月_清风14 小时前
AI 时代,为什么架构师又开始谈"本体论"?
人工智能·后端·agent
光影少年14 小时前
react navite跨端项目的痛点、踩过哪些坑、怎么解决
前端·react native·react.js
默_笙14 小时前
🧀 用户访问一个网站到底经历了什么?全栈部署的"城市观光"指南
前端·javascript