在学习 github 上的一些项目时,不同项目使用的 mysql 版本不一样,下面分享下我是如何在 macOS 上使用 Homebrew 同时安装并运行 MySQL 8.4 和 MySQL 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 来处理这种情况。