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
作者
Aaron
发布于
2024年05月17日
许可协议