在Arm芯片苹果Mac系统上通过homebrew安装多版本mysql并解决各种报错,感谢deepseek帮助解决部分问题

server/2025/2/3 15:23:26/

背景:

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 '你的新密码';


http://www.ppmy.cn/server/164649.html

相关文章

解锁FPGA的故障免疫密码

我们身处“碳基智能”大步迈向“硅基智能”序曲中,前者更像是后者的引导程序,AI平民化时代,万物皆摩尔定律。 越快越好,几乎适用绝大多数场景。 在通往人工智能的征程中,算力无处不在,芯片作用无可替代。 十六年前,就已宣称自己是一家软件公司的英伟达,现已登顶全球…

冯诺依曼系统及操作系统

目录 一.冯诺依曼体系结构 二.操作系统 三.系统调用和库函数概念 一.冯诺依曼体系结构 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系 截至目前,我们所认识的计算机,都是由一…

GRAPHARG——学习

20250106 项目git地址:https://github.com/microsoft/graphrag.git 版本:1.2.0 ### This config file contains required core defaults that must be set, along with a handful of common optional settings. ### For a full list of available setti…

LabVIEW如何有效地进行数据采集?

数据采集(DAQ)是许多工程项目中的核心环节,无论是测试、监控还是控制系统,准确、高效的数据采集都是至关重要的。LabVIEW作为一个图形化编程环境,提供了丰富的功能来实现数据采集,确保数据的实时性与可靠性…

nosql mysql的区别

NoSQL 和 MySQL 是两种不同类型的数据库管理系统,它们在设计理念、数据模型、可扩展性和应用场景等方面有着本质的区别。 NoSQL 数据库 特点: 灵活的数据模型: NoSQL 数据库通常没有固定的表结构,可以很容易地存储不同结构的文档或键值对。水平扩展: …

Spring MVC学习——发送请求(@RequestMapping注解及请求参数绑定)

前言 Spring MVC作为Spring框架中的核心组件之一,其强大的功能在于能简洁高效地处理HTTP请求和响应。在开发Web应用时,理解和正确使用Spring MVC的注解,尤其是RequestMapping注解,至关重要。本文将详细讲解RequestMapping注解的使…

CAPL与外部接口

CAPL与外部接口 目录 CAPL与外部接口1. 引言2. CAPL与C/C++交互2.1 CAPL与C/C++交互简介2.2 CAPL与C/C++交互实现3. CAPL与Python交互3.1 CAPL与Python交互简介3.2 CAPL与Python交互实现4. CAPL与MATLAB交互4.1 CAPL与MATLAB交互简介4.2 CAPL与MATLAB交互实现5. 案例说明5.1 案…

SpringBoot 整合 SpringMVC:配置嵌入式服务器

修改和 server 相关的配置(ServerProperties): server.port8081 server.context‐path/tx server.tomcat.uri‐encodingUTF‐8 注册 Servlet 三大组件:Servlet、Fileter、Listener SpringBoot 默认是以 jar 包的方式启动嵌入式的 Servlet 容器来启动 Spr…