在Arm芯片苹果Mac系统上通过homebrew安装多版本mysql并解决各种报错,感谢deepseek帮助解决部分问题
背景:
1.苹果设备上安装mysql,随着苹果芯片的推出,很多地方都变得不一样了。
2.很多时候为了老项目能运行,我们需要能安装mysql5.7或者mysql8.0或者mysql8.2.虽然本文编写时最新的默认mysql已经是9.2版本。
安装步骤
1.执行homebrew命令(对homebrew不熟悉的可以搜索一下相关文章,本文不赘述。
brew install mysql
brew install mysql@8.4
brew install mysql@5.7
2.关闭已有服务(本文以8.4为例子)
brew services stop mysql
brew services stop mysql@8.4
brew services stop mysql@5.7
此时如果再运行命令 brew services list
会看见所有mysql的服务都是关闭的
3.复制配置
注意默认情况下,3个数据库使用了同一个配置文件,并且是同一份data目录,这显然不对。
我们先复制/opt/homebrew/etc/my.cnf 文件为 /opt/homebrew/etc/my84.cnf。
然后调整其内容为(注意最好每个配置的port要不同,否则服务无法同时开启)
# Default Homebrew MySQL server config
[mysqld]
port=3306
# 数据目录
datadir=/opt/homebrew/var/mysql84
socket=/opt/homebrew/var/mysql84/mysql.sock
# 错误日志
log_error=/opt/homebrew/var/mysql84/error.log
# 默认字符集
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# Only allow connections from localhost
bind-address = 127.0.0.1
mysqlx-bind-address = 127.0.0.1
# SQL模式
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO
4.拆分数据保存目标文件夹
创建目标数据文件夹(感谢deepseek,这才知道用户名是_mysql)
sudo mkdir -p /opt/homebrew/var/mysql84
sudo chown -R _mysql:admin /opt/homebrew/var/mysql84 # macOS 默认 MySQL 用户为 _mysql
sudo chmod 755 /opt/homebrew/var/mysql84
5.重新初始化
/opt/homebrew/opt/mysql@8.4/bin/mysqld --defaults-file=/opt/homebrew/etc/my84.cnf --initialize --user=_mysql --basedir=/opt/homebrew/opt/mysql@8.4 --datadir=/opt/homebrew/var/mysql84
6.临时密码位于
/opt/homebrew/var/mysql84/error.log
A temporary password is generated for root@localhost:
7.修改文件
/opt/homebrew/Cellar/mysql@8.4/8.4.4/homebrew.mxcl.mysql@8.4.plist
其中的各种路径/opt/homebrew/var/mysql 末尾改为mysql84
8.启动mysql
brew services start mysql@8.4
注意第7步改对了,这块才能顺利启动,否则看着似乎启动成功了,实际上会马上终止
9.终于成功启动,此时可以登录了
mysql -u root -p
10.修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';