当前位置: 首页 > article >正文

告别折腾!Mac上MySQL 5.7、8.0多版本共存与管理教程(基于Homebrew Services)

Mac开发者必备用Homebrew Services实现MySQL多版本无缝管理在开发者的日常工作中经常需要同时维护多个项目而这些项目可能依赖不同版本的MySQL数据库。传统做法是频繁卸载重装或者通过Docker等方案解决但这些方法要么效率低下要么资源消耗过大。本文将介绍如何利用Mac上强大的Homebrew Services工具实现MySQL 5.7和8.0等多个版本的共存与灵活切换。1. 准备工作与环境配置在开始之前我们需要确保系统环境已经准备就绪。对于使用Apple Silicon芯片M1/M2的Mac用户Homebrew的安装路径与Intel芯片有所不同这会影响后续的配置命令。首先检查Homebrew是否已安装brew --version如果尚未安装可以使用以下命令快速安装/bin/bash -c $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)安装完成后建议运行以下命令确保环境变量配置正确echo eval $(/opt/homebrew/bin/brew shellenv) ~/.zshrc source ~/.zshrc提示如果你使用的是bash而非zsh请将上述命令中的.zshrc替换为.bash_profile2. 安装多个MySQL版本Homebrew使得安装不同版本的MySQL变得非常简单。我们可以同时安装5.7和8.0版本而不会产生冲突。2.1 安装MySQL 5.7执行以下命令安装MySQL 5.7brew install mysql5.7安装完成后你会看到类似如下的输出Weve installed your MySQL database without a root password...2.2 安装MySQL 8.0在另一个终端窗口或等待5.7安装完成后执行brew install mysql注意默认情况下brew install mysql会安装最新的稳定版目前是8.02.3 验证安装检查两个版本是否都已正确安装brew list | grep mysql你应该能看到类似输出mysql mysql5.73. 配置多实例共存关键步骤来了——我们需要配置这两个MySQL实例使它们能够同时运行且互不干扰。3.1 为每个版本创建独立配置文件首先为MySQL 5.7创建配置文件nano /opt/homebrew/etc/my5.7.cnf添加以下内容关键配置项[mysqld] port 3307 datadir /opt/homebrew/var/mysql5.7 socket /tmp/mysql5.7.sock同样为MySQL 8.0创建配置文件nano /opt/homebrew/etc/my8.0.cnf内容如下[mysqld] port 3308 datadir /opt/homebrew/var/mysql8.0 socket /tmp/mysql8.0.sock3.2 初始化数据目录为每个版本创建独立的数据目录并初始化对于MySQL 5.7mkdir -p /opt/homebrew/var/mysql5.7 mysqld --initialize --usermysql --datadir/opt/homebrew/var/mysql5.7对于MySQL 8.0mkdir -p /opt/homebrew/var/mysql8.0 mysqld --initialize --usermysql --datadir/opt/homebrew/var/mysql8.0注意初始化过程会生成临时root密码请记录在安全的地方4. 使用Homebrew Services管理服务Homebrew Services是管理后台服务的强大工具我们可以利用它来轻松控制不同MySQL版本的启停。4.1 创建自定义服务定义默认情况下Homebrew Services只能管理一个MySQL版本。我们需要为第二个版本创建自定义服务定义。首先找到MySQL 5.7的plist文件find /opt/homebrew -name *.plist | grep mysql5.7假设找到的路径是/opt/homebrew/Cellar/mysql5.7/5.7.39/homebrew.mxcl.mysql5.7.plist我们复制并修改它cp /opt/homebrew/Cellar/mysql5.7/5.7.39/homebrew.mxcl.mysql5.7.plist ~/Library/LaunchAgents/homebrew.mxcl.mysql5.7.plist编辑这个文件修改以下关键部分keyProgramArguments/key array string/opt/homebrew/opt/mysql5.7/bin/mysqld_safe/string string--defaults-file/opt/homebrew/etc/my5.7.cnf/string /array4.2 注册并启动服务对于MySQL 5.7brew services start --file~/Library/LaunchAgents/homebrew.mxcl.mysql5.7.plist对于MySQL 8.0使用默认服务brew services start mysql4.3 验证服务状态检查两个服务是否都在运行brew services list你应该看到类似输出Name Status User Plist mysql started user /Users/user/Library/LaunchAgents/homebrew.mxcl.mysql.plist mysql5.7 started user /Users/user/Library/LaunchAgents/homebrew.mxcl.mysql5.7.plist5. 日常使用与切换技巧现在你已经有了两个独立运行的MySQL实例下面介绍如何高效使用它们。5.1 连接不同版本的MySQL对于MySQL 5.7mysql -uroot -P3307 -S/tmp/mysql5.7.sock -p对于MySQL 8.0mysql -uroot -P3308 -S/tmp/mysql8.0.sock -p5.2 创建便捷别名为了简化操作可以在.zshrc或.bash_profile中添加以下别名alias mysql5.7mysql -uroot -P3307 -S/tmp/mysql5.7.sock -p alias mysql8.0mysql -uroot -P3308 -S/tmp/mysql8.0.sock -p5.3 使用不同版本的命令行工具如果你需要明确使用特定版本的命令行工具如mysqldump可以通过完整路径调用MySQL 5.7的工具/opt/homebrew/opt/mysql5.7/bin/mysqldumpMySQL 8.0的工具/opt/homebrew/opt/mysql/bin/mysqldump6. 常见问题解决在实际使用中可能会遇到一些问题这里提供几个常见问题的解决方案。6.1 端口冲突问题如果遇到端口已被占用的错误可以检查端口使用情况lsof -i :3307 lsof -i :33086.2 忘记root密码对于MySQL 5.7brew services stop mysql5.7 mysqld_safe --defaults-file/opt/homebrew/etc/my5.7.cnf --skip-grant-tables mysql -uroot -P3307 -S/tmp/mysql5.7.sock6.3 性能调优建议对于开发环境可以在各自的配置文件中添加以下优化参数对于MySQL 5.7innodb_buffer_pool_size 128M innodb_log_file_size 48M对于MySQL 8.0innodb_buffer_pool_size 256M innodb_log_file_size 64M7. 自动化脚本管理为了进一步提升效率可以创建一些实用脚本来自动化常见操作。7.1 快速切换脚本创建一个switch_mysql.sh脚本#!/bin/bash if [ $1 5.7 ]; then brew services stop mysql brew services start --file~/Library/LaunchAgents/homebrew.mxcl.mysql5.7.plist echo Switched to MySQL 5.7 elif [ $1 8.0 ]; then brew services stop --file~/Library/LaunchAgents/homebrew.mxcl.mysql5.7.plist brew services start mysql echo Switched to MySQL 8.0 else echo Usage: switch_mysql.sh [5.7|8.0] fi7.2 备份脚本示例创建backup_mysql.sh脚本用于备份两个版本的数据#!/bin/bash DATE$(date %Y%m%d) BACKUP_DIR$HOME/mysql_backups/$DATE mkdir -p $BACKUP_DIR # Backup MySQL 5.7 /opt/homebrew/opt/mysql5.7/bin/mysqldump -uroot -P3307 -S/tmp/mysql5.7.sock -p --all-databases $BACKUP_DIR/mysql5.7.sql # Backup MySQL 8.0 /opt/homebrew/opt/mysql/bin/mysqldump -uroot -P3308 -S/tmp/mysql8.0.sock -p --all-databases $BACKUP_DIR/mysql8.0.sql echo Backups completed in $BACKUP_DIR在实际项目开发中我发现这种多版本共存方案特别适合需要同时维护新旧系统的开发者。通过合理的配置和脚本辅助可以完全避免版本冲突带来的困扰让开发工作更加流畅高效。

相关文章:

告别折腾!Mac上MySQL 5.7、8.0多版本共存与管理教程(基于Homebrew Services)

Mac开发者必备:用Homebrew Services实现MySQL多版本无缝管理 在开发者的日常工作中,经常需要同时维护多个项目,而这些项目可能依赖不同版本的MySQL数据库。传统做法是频繁卸载重装,或者通过Docker等方案解决,但这些方…...

用PDA5927四象限光电管DIY一个激光对中/位置检测模块(附Python数据采集代码)

用PDA5927四象限光电管DIY激光对中检测模块实战指南 在工业自动化和精密仪器领域,激光对中检测一直是个既基础又关键的技术需求。传统方案往往依赖昂贵的专业设备,而今天我们要用一颗不到百元的PDA5927四象限光电管,配合常见运放和Python代码…...

从图像处理到科学计算:手把手教你用Nsight Compute深度剖析CUDA内存访问错误

从图像处理到科学计算:Nsight Compute深度剖析CUDA内存访问错误实战指南 当你的CUDA内核在图像处理任务中运行良好,却在科学计算或金融模拟等大规模数据集上突然崩溃时,那种挫败感每个GPU开发者都深有体会。传统工具如cuda-memcheck能捕获明显…...

模拟CMOS放大器频率响应:从密勒效应到零极点,手把手教你用LTspice仿真验证

模拟CMOS放大器频率响应:从密勒效应到零极点,手把手教你用LTspice仿真验证 在模拟集成电路设计中,放大器的频率响应分析是一个既基础又关键的技术难点。许多初学者在学习过程中常常陷入这样的困境:明明理解了教科书中的公式推导&a…...

抖音无水印下载工具:如何高效保存你喜爱的短视频内容?

抖音无水印下载工具:如何高效保存你喜爱的短视频内容? 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fal…...

【从知识库到知识图谱的推理之路】第三章 知识抽取与图谱构建(Knowledge Extraction Graph Construction) (二)3.2 半/非结构化文本抽取

3.2 半/非结构化文本抽取 半结构化与非结构化文本构成了自然语言处理领域中信息抽取的主要数据来源。半结构化文本通常指具有隐含格式但缺乏严格模式约束的文档,如网页表格、XML 文档、JSON 记录;非结构化文本则涵盖自由流式叙述文本,包括新闻文章、社交媒体帖子、科学文献…...

3步解决Windows乱码问题:Locale Emulator区域模拟器使用指南

3步解决Windows乱码问题:Locale Emulator区域模拟器使用指南 【免费下载链接】Locale-Emulator Yet Another System Region and Language Simulator 项目地址: https://gitcode.com/gh_mirrors/lo/Locale-Emulator 你是否曾经因为Windows系统区域设置而无法正…...

ok-ww:让鸣潮自动化成为你的第二大脑,解放双手重拾游戏乐趣

ok-ww:让鸣潮自动化成为你的第二大脑,解放双手重拾游戏乐趣 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves …...

Windows虚拟串口驱动:com0com零成本设备模拟解决方案

Windows虚拟串口驱动:com0com零成本设备模拟解决方案 【免费下载链接】com0com Null-modem emulator - The virtual serial port driver for Windows. Brought to you by: vfrolov [Vyacheslav Frolov](http://sourceforge.net/u/vfrolov/profile/) 项目地址: htt…...

在OpenClawAgent工作流中集成Taotoken作为模型供应商的配置指南

在OpenClawAgent工作流中集成Taotoken作为模型供应商的配置指南 1. 准备工作 在开始配置前,请确保已安装OpenClaw框架并创建Taotoken账户。登录Taotoken控制台获取API Key,并在模型广场查看可用模型ID。OpenClaw要求Node.js 16或更高版本运行环境。 2…...

别再自己写I2S了!手把手教你用ZYNQ的官方IP核快速搭建音频传输通道(Vivado 2023.1)

别再重复造轮子!ZYNQ官方I2S IP核实战指南:从配置到调试全解析 当项目进度表上的截止日期像达摩克利斯之剑般悬在头顶时,选择自研I2S协议栈还是调用官方IP核,往往决定了你是准时下班还是通宵debug。作为曾经在三天内完成四通道麦克…...

如何将B站缓存视频永久保存:m4s-converter完整使用教程

如何将B站缓存视频永久保存:m4s-converter完整使用教程 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 还在为B站视频下架而烦恼吗&a…...

AutoDock Vina金属离子对接完整指南:如何正确处理锌离子等金属蛋白质对接

AutoDock Vina金属离子对接完整指南:如何正确处理锌离子等金属蛋白质对接 【免费下载链接】AutoDock-Vina AutoDock Vina 项目地址: https://gitcode.com/gh_mirrors/au/AutoDock-Vina AutoDock Vina是一款快速且广泛使用的开源分子对接引擎,特别…...

AlphaFold3-pytorch深度解析:革命性生物分子结构预测框架的完整技术架构与实践指南

AlphaFold3-pytorch深度解析:革命性生物分子结构预测框架的完整技术架构与实践指南 【免费下载链接】alphafold3-pytorch Implementation of Alphafold 3 from Google Deepmind in Pytorch 项目地址: https://gitcode.com/gh_mirrors/al/alphafold3-pytorch …...

非科班出身的面试“降维打击”:如何将你的原生专业变成不可替代的壁垒?

在当今的科技求职市场中,非计算机(Non-CS)专业转码的留学生群体中普遍蔓延着一种“冒名顶替综合征(Imposter Syndrome)”。在面对本科甚至高中就开始敲代码的纯科班生时,许多人极度自卑,觉得自己…...

保姆级教程:用BTC工具链搞定AUTOSAR模型(BCV模块)的MIL测试与报告生成

保姆级教程:用BTC工具链实现AUTOSAR模型(BCV模块)的MIL测试全流程实战 在汽车电子软件开发领域,AUTOSAR架构已成为行业标准,而基于模型的开发(MBD)方法则大幅提升了开发效率。但对于许多刚接触B…...

Revit族参数管理太乱?教你用Dynamo+Excel自动导出族库信息表(保姆级流程)

Revit族参数管理革命:DynamoExcel自动化解决方案全解析 在BIM项目交付过程中,族参数管理往往是设计师最头疼的环节之一。当项目进入收尾阶段,甲方要求提供所有门窗的规格参数表;当施工方询问墙面材料的防火等级分布;当…...

Milvus CLI从安装到实战:一份给开发者的避坑指南与高级技巧合集

Milvus CLI从安装到实战:一份给开发者的避坑指南与高级技巧合集 第一次接触Milvus CLI时,那种既兴奋又忐忑的心情至今记忆犹新。作为一款强大的向量数据库命令行工具,Milvus CLI确实能极大提升开发效率,但新手阶段踩过的那些坑——…...

道岔转辙机‘罢工’了怎么办?一次模拟ZD6型转辙机故障排查与修复实录

ZD6型转辙机故障排查实战手册:从卡阻到电路异常的完整解决方案 清晨6点的车辆段,早班检修组接到调度紧急通知:"D12道岔定位无表示,列车进路无法排列"。作为信号设备维护人员,这种报警意味着必须在30分钟内完…...

别再自己画登录页了!手把手教你用uniCloud配置DCloud一键登录弹窗(附完整样式代码)

解锁uni-app一键登录:从配置思维到深度定制实战指南 在移动应用开发领域,用户登录体验直接影响着转化率和留存率。传统短信验证码登录需要用户经历"输入手机号-等待短信-输入验证码"的繁琐流程,而一键登录技术通过运营商网关认证&a…...

保姆级教程:从零封装一个不闪的微信小程序自定义TabBar组件(附完整代码)

微信小程序自定义TabBar组件封装实战:从零构建无闪烁解决方案 第一次在小程序里尝试自定义TabBar时,那个恼人的闪烁问题让我差点放弃。后来才发现,官方文档虽然提供了基础实现方案,但隐藏了不少性能优化的细节。本文将带你从工程…...

WindowsCleaner:5个技巧快速解决C盘爆红问题

WindowsCleaner:5个技巧快速解决C盘爆红问题 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 当你的电脑C盘突然变红,系统频繁弹出"磁…...

别再啃英文原版了!我整理了AlexNet到YOLO的CV经典论文中文版(附对照PDF)

计算机视觉经典论文高效学习指南:从AlexNet到YOLO的中英对照实践 第一次接触计算机视觉领域的经典论文时,我完全被满屏的数学公式和专业术语吓退了。那些看似简单的英文单词组合起来却像天书一样难以理解,更别提还要同时消化复杂的模型架构图…...

创业公司如何借助Taotoken的多模型能力快速进行AI产品原型验证

创业公司如何借助Taotoken的多模型能力快速进行AI产品原型验证 1. 多模型统一接入的价值 对于资源有限的创业团队而言,快速验证产品原型是降低试错成本的关键。传统方式需要分别注册多个大模型平台账户、申请API Key、学习不同接口规范,这一过程往往耗…...

BERT与LLM模型压缩技术:方法与实战

1. BERT与LLM模型压缩技术概述 在自然语言处理领域,大型语言模型(LLM)如BERT、GPT等已经展现出强大的能力,但这些模型通常包含数十亿甚至数千亿参数,导致在实际应用中面临巨大的计算和存储开销。模型压缩技术应运而生&…...

量子计算开发者职业转型五大关键步骤:软件测试从业者的进阶指南

当量子计算从实验室的理论构想,逐步走向金融、医药、能源等产业的应用舞台,软件测试从业者正站在职业转型的关键路口。量子计算带来的不仅是算力革命,更是测试范式的根本性重构——从经典的确定性验证,转向量子世界的概率性、复杂…...

手把手教你用Inkscape+Unicorn插件,为80mm绘图仪生成G-code文件

手把手教你用InkscapeUnicorn插件,为80mm绘图仪生成G-code文件 在创客和DIY爱好者的世界里,三轴平台(XYZ平台)是最基础也最实用的工具之一。无论是绘制简单的文字还是复杂的图案,G-code文件都是控制这些平台运动的核心…...

AI协同认知:逻辑与梦境融合的创意生成技术

1. 项目概述:当AI学会"做梦"意味着什么去年我在调试一个创意生成AI时,偶然发现一个有趣现象:当模型在低温度参数下运行后,再突然切换到高随机性状态时,会产生类似"梦境联想"的创意组合。这个意外发…...

通过 curl 命令直接调用 Taotoken 大模型 API 的简易方法

通过 curl 命令直接调用 Taotoken 大模型 API 的简易方法 1. 准备工作 在开始调用 Taotoken 大模型 API 之前,需要确保已经准备好 API Key 和模型 ID。登录 Taotoken 控制台,在「API 密钥」页面可以创建和管理 API Key。模型 ID 可以在「模型广场」查看…...

MTKClient Live DVD V6刷机工具实战指南:避坑配置与高效操作

MTKClient Live DVD V6刷机工具实战指南:避坑配置与高效操作 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient MTKClient是一款功能强大的联发科芯片调试与刷机工具,专…...