Mac下使用homebrew管理多版本MySQL
需求
最近同时处理几个项目,涉及MySQL的5.7和8.0版本,需要本地Mac同时运行两个版本的数据库,以提高工作效率。
思路
针对每个版本的MySQL创建独立的配置文件、数据目录和端口号,从而避免多版本同时运行时的冲突,以及安装新版本时的冲突。
安装
通过brew安装MySQL,默认安装在/usr/local/Cellar目录
1. 安装MySQL5.7
$ brew install mysql@5.7
2. 指定MySQL5.7的配置文件、数据目录和端口号
2.1 指定配置文件、数据目录位置
思路:通过安装后自带的homebrew.mxcl.mysql@5.7.plist文件,指定配置文件、数据目录和工作目录
修改配置文件:--defaults-file
修改数据目录:--datadir
修改工作目录:WorkingDirectory
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>homebrew.mxcl.mysql@5.7</string>
<key>LimitLoadToSessionType</key>
<array>
<string>Aqua</string>
<string>Background</string>
<string>LoginWindow</string>
<string>StandardIO</string>
<string>System</string>
</array>
<key>ProgramArguments</key>
<array>
<string>/usr/local/opt/mysql@5.7/bin/mysqld_safe</string>
<!-- 通过--defaults-file指定mysql配置文件 -->
<string>--defaults-file=/usr/local/etc/my@5.7.cnf</string>
<!-- 通过--datadir指定mysql的数据目录 -->
<string>--datadir=/usr/local/var/mysql@5.7</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WorkingDirectory</key>
<!-- 修改mysql的工作目录 -->
<string>/usr/local/var/mysql@5.7</string>
</dict>
</plist>
2.2 修改端口号和socket文件
编辑/usr/local/etc/my@5.7.cnf文件
[mysqld]
port = 3307
socket = /tmp/mysql@5.7.sock
3. 启动测试
$ brew services stop mysql@5.7
$ brew services start mysql@5.7
$ brew services info mysql@5.7
mysql@5.7 (homebrew.mxcl.mysql@5.7)
Running: ✔
Loaded: ✔
Schedulable: ✘
User: arron
PID: 49420
看到以上内容,说明修改成功
4. 安装MySQL8.0
$ brew install mysql@8.0
后续步骤与5.7完全相同,这样避免以后再出现版本冲突问题了。
参考
Mac下使用homebrew管理多版本MySQL
https://bluelight.top/2024/05/17/1715933037653