M1/M2 Mac安装MySQL的正确姿势(Homebrew) – wiki基地


M1/M2 Mac 安装 MySQL 的终极指南:拥抱 Homebrew 的正确姿势

引言:新时代的挑战与最佳实践

随着苹果 M1/M2 系列芯片(Apple Silicon)的全面普及,macOS 生态迎来了激动人心的架构变革。这不仅带来了前所未有的能效比,也给开发者们带来了一些新的挑战:如何在新架构上平稳、高效地搭建我们熟悉的开发环境?MySQL,作为世界上最流行的开源关系型数据库,无疑是这套环境中的核心基石。

过去,在 Intel Mac 上安装 MySQL 的方法五花八门,官网 DMG 安装包、编译安装、各类集成环境……但在 M1/M2 时代,追求原生 ARM64 架构的性能释放和简洁高效的管理方式,已成为开发者们的共识。在众多方案中,使用 Homebrew 包管理器进行安装,无疑是当前最优雅、最标准、最符合“正确姿势”的选择。

本文将为您呈现一份终极指南,它不仅仅是一份命令清单,更是一套完整的方法论。我们将从环境准备开始,一步步深入,详细拆解使用 Homebrew 在 M1/M2 Mac 上安装、配置、管理 MySQL 的每一个环节,并辅以详尽的解释和常见问题排查。无论您是初次接触 Mac 开发的新手,还是从 Intel Mac 过渡而来的老兵,遵循本指南,您将能够建立一个稳定、高效且易于维护的本地 MySQL 环境。


第一章:准备工作:磨刀不误砍柴工

在正式请出主角 MySQL 之前,我们需要确保我们的“舞台”——macOS 系统——已经准备就绪。一个干净、配置正确的环境是成功安装和稳定运行所有软件的前提。

1.1 确认你的 Mac 架构

虽然本文标题已明确指向 M1/M2 Mac,但确认一下总没有坏处。点击屏幕左上角的苹果图标 -> 关于本机。在概览窗口中,如果“芯片”一栏显示为 “Apple M1”、“Apple M2” 或其 Pro/Max/Ultra 版本,那么恭喜你,你来对地方了。

1.2 安装 Xcode Command Line Tools

Homebrew 依赖于 Xcode 命令行工具提供的一些基础编译和开发工具(如 Git, Clang 等)。这是在 Mac 上进行任何开发活动的“第一滴血”,必须安装。

打开“终端” (Terminal) 应用(你可以在“应用程序” -> “实用工具”中找到它,或通过 Spotlight 搜索),输入以下命令并回车:

bash
xcode-select --install

系统会弹出一个对话框,提示您安装命令行开发者工具。点击“安装”,并同意许可协议。等待几分钟,系统会自动下载并安装完毕。如果提示已经安装,那说明你之前已经准备好了,可以直接跳到下一步。

验证安装成功:
可以再次运行 xcode-select --install,如果看到 error: command line tools are already installed 的提示,就证明安装成功了。

1.3 安装与配置 Homebrew

Homebrew 是 macOS(或 Linux)的“缺失的软件包管理器”,它能让你轻松地安装和管理各种命令行工具和软件。对于 M1/M2 Mac,Homebrew 会将所有软件安装在专为 Apple Silicon 设计的路径下,以实现最佳性能和兼容性。

1. 安装 Homebrew:
在终端中粘贴并执行以下官方安装脚本。这个脚本会自动识别你的芯片架构并选择正确的安装路径。

bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装过程中,脚本会提示你输入管理员密码(输入时密码不可见,这是正常的),并会清晰地列出它将要创建的目录和执行的操作。按 Return (回车) 键继续。

2. 理解安装路径的差异(关键知识点):
这是区分 M1/M2 Mac 与 Intel Mac 的一个核心不同点:
* Apple Silicon (M1/M2): Homebrew 的主目录是 /opt/homebrew
* Intel Mac: Homebrew 的主目录是 /usr/local

这意味着,所有通过 Homebrew 安装的软件(包括 MySQL)都会位于 /opt/homebrew/ 目录下。理解这一点对于后续排查路径问题至关重要。

3. 配置环境变量:
安装脚本的最后,通常会提示你需要将 Homebrew 的路径添加到 Shell 的配置文件中,以确保系统能找到 brew 命令。对于现代 macOS(Catalina 及以后版本),默认 Shell 是 Zsh,所以配置文件是 ~/.zshrc

终端会给出类似下面的提示:

==> Next steps:
- Run these two commands in your terminal to add Homebrew to your PATH:
(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/your_username/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

请严格按照你终端里给出的提示执行命令。这通常是两行命令,作用是将 Homebrew 的可执行文件目录 (/opt/homebrew/bin) 和文档目录等加入到系统的环境变量 PATH 中。

4. 验证 Homebrew 安装:
关闭并重新打开一个新的终端窗口(或执行 source ~/.zshrc)使配置生效。然后运行:

bash
brew --version

如果你看到类似 Homebrew 4.x.x 并且 Homebrew/homebrew-core (git revision ...) 的输出,说明 Homebrew 已成功安装并配置好。

5. 保持 Homebrew 最佳状态:
在进行任何新软件安装前,运行以下命令,这是一个好习惯:

bash
brew update # 更新 Homebrew 自身和软件包列表
brew doctor # 检查 Homebrew 的环境是否存在问题

如果 brew doctor 显示 Your system is ready to brew.,那么万事俱备,我们可以正式开始安装 MySQL 了。


第二章:核心环节:使用 Homebrew 安装 MySQL

现在,我们的环境已经一尘不染,是时候请出今天的主角了。

2.1 搜索可用的 MySQL 版本

Homebrew 的仓库中通常有多个版本的 MySQL。我们可以先用 search 命令看看:

bash
brew search mysql

你会看到一个列表,其中 mysql 是最新的稳定版,可能还会有 [email protected] 这样的特定版本。通常情况下,我们直接安装 mysql 即可,它会自动对应到社区维护的最新稳定版本(例如 8.x)。

2.2 执行安装命令

安装过程非常简单,只需一条命令:

bash
brew install mysql

按下回车,Homebrew 将会为你处理一切:
1. 解析依赖: 检查 MySQL 是否需要其他工具(如 openssl),并自动安装它们。
2. 下载源码包/二进制包: Homebrew 会智能地选择适用于 arm64 (Apple Silicon) 架构的预编译二进制包,这大大加快了安装速度。
3. 编译与安装: 将所有文件放置在 /opt/homebrew/Cellar/mysql/版本号/ 目录下。
4. 创建符号链接:/opt/homebrew/bin 等目录下创建符号链接(快捷方式),方便你直接在命令行中使用 mysql 等命令。

整个过程可能需要几分钟,具体取决于你的网络速度。

2.3 解读安装后的重要提示

安装完成后,终端会输出一段非常重要的信息,请务必仔细阅读,不要直接忽略! 这段信息是 Homebrew 官方给你的“使用说明书”。它通常包含以下内容:

“`
==> Caveats
We’ve installed your MySQL database without a root password. To secure it run:
mysql_secure_installation

MySQL is configured to only allow connections from localhost by default

To start mysql now and restart at login:
brew services start mysql
Or, if you don’t want/need a background service you can just run:
/opt/homebrew/opt/mysql/bin/mysql.server start
==> Summary
🍺 /opt/homebrew/Cellar/mysql/8.1.0: 308 files, 293.4MB
“`

这段话包含了三个核心信息:
1. 安全提示: 默认安装的 MySQL root 用户没有密码,极不安全。你需要运行 mysql_secure_installation 脚本来设置密码和进行安全加固。
2. 启动方式: 提供了两种启动 MySQL 服务的方式。brew services start mysql 是推荐的方式,它会将 MySQL 设置为开机自启的后台服务。而 mysql.server start 是手动启动方式。
3. 安装路径: 明确告诉你 MySQL 的文件安装在了哪里。


第三章:初始化与安全配置:为 MySQL 固若金汤

仅仅安装完软件是不够的,一个未经配置的数据库就像一座没有上锁的宝库,非常危险。

3.1 启动 MySQL 服务

我们采纳 Homebrew 的建议,使用 brew services 来管理 MySQL 服务。这种方式优雅且省心。

在终端执行:

bash
brew services start mysql

执行后,你会看到类似 ==> Successfully startedmysql(label: homebrew.mxcl.mysql) 的提示。这表示 MySQL 服务已经在后台运行,并且已经被设置为登录时自动启动。

如何验证服务是否已启动?
可以使用 brew services list 命令查看当前由 Homebrew管理的所有服务状态。

bash
brew services list

你应该能看到 mysql 的状态是 started

3.2 运行安全配置脚本

这是安装后最重要的一步。该脚本会引导你完成一系列安全设置,包括设置 root 密码、删除匿名用户、禁止 root 远程登录等。

在终端执行:

bash
mysql_secure_installation

接下来,你将进入一个交互式的问答过程:

  1. VALIDATE PASSWORD COMPONENT (密码强度验证插件)
    > Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No:

    这个插件会要求你设置的密码必须符合一定的复杂度规则(长度、大小写、数字、特殊字符)。对于本地开发环境,可以选 n (No) 来避免麻烦。对于生产环境,强烈建议选 y (Yes) 并选择一个较高的安全等级。我们这里输入 n 并回车。

  2. Set root password (设置 root 用户密码)
    > New password:
    > Re-enter new password:

    在这里输入你为 root 用户设定的密码。这是你未来连接和管理数据库的最高权限密码,请务必牢记。输入时屏幕上不会显示字符。

  3. Remove anonymous users (移除匿名用户)
    > Remove anonymous users? (Press y|Y for Yes, any other key for No) :

    匿名用户会带来安全风险,必须移除。输入 y 并回车。

  4. Disallow root login remotely (禁止 root 用户远程登录)
    > Disallow root login remotely? (Press y|Y for Yes, any other key for No) :

    为了安全,root 用户只应该在本地(localhost)登录。禁止其远程登录是一个非常好的安全习惯。输入 y 并回车。

  5. Remove test database and access to it (移除测试数据库)
    > Remove test database and access to it? (Press y|Y for Yes, any other key for No) :

    MySQL 安装时会带一个名为 test 的数据库,任何人都可以访问。它没有实际用途且存在风险,应该移除。输入 y 并回车。

  6. Reload privilege tables (重新加载权限表)
    > Reload privilege tables now? (Press y|Y for Yes, any other key for No) :

    所有之前的更改都需要重新加载权限表才能生效。输入 y 并回车。

完成后,你会看到 All done! 的消息。至此,你的 MySQL 数据库已经完成了基础的安全加固,可以安全地使用了。


第四章:验证与连接:证明你的成功

现在,让我们来亲手验证一下我们的劳动成果。

4.1 命令行连接测试

打开终端,使用以下命令尝试登录 MySQL:

bash
mysql -u root -p

  • -u root 指定了用户名为 root
  • -p 表示接下来需要输入密码。

命令执行后,系统会提示你 Enter password:。输入你在上一步 mysql_secure_installation 中设置的 root 密码,然后回车。

如果一切顺利,你将看到 MySQL 的欢迎信息和 mysql> 提示符,如下所示:

“`
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.1.0 Homebrew

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
holders.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql>
“`

进入 mysql> 提示符后,可以执行一些简单的 SQL 命令来进一步验证:

“`sql
— 查看当前所有数据库
SHOW DATABASES;

— 查看 MySQL 版本信息
SELECT version();

— 退出 MySQL 客户端
EXIT;
“`

如果这些命令都能正常执行并返回结果,那么恭喜你,MySQL 核心服务已经完美运行!

4.2 配置 PATH 环境变量(可选但强烈推荐)

有时,你可能会发现虽然 brew install mysql 成功了,但在终端输入 mysql 时却提示 command not found。这通常是因为包含 mysql 可执行文件的目录没有被加入到系统的 PATH 环境变量中。

虽然 Homebrew 的安装脚本会尝试帮你配置,但有时可能需要手动确认或添加。mysql 的可执行文件位于 /opt/homebrew/opt/mysql/bin

  1. 打开或创建 ~/.zshrc 文件:
    bash
    open ~/.zshrc
    # 如果文件不存在,可以使用 nano ~/.zshrc 或 vim ~/.zshrc 创建并编辑

  2. 在文件末尾添加以下行:
    bash
    export PATH="/opt/homebrew/opt/mysql/bin:$PATH"

    这行代码的意思是,将 MySQL 的 bin 目录添加到 PATH 环境变量的最前面,这样系统就能优先找到它。

  3. 使配置生效:
    关闭并重新打开终端,或者执行 source ~/.zshrc

之后,你应该可以在任何路径下直接使用 mysqlmysqldump 等命令了。


第五章:日常管理与维护

通过 Homebrew 安装的 MySQL,日常管理变得异常简单。

  • 启动 MySQL 服务:
    bash
    brew services start mysql

  • 停止 MySQL 服务:
    bash
    brew services stop mysql

  • 重启 MySQL 服务:
    bash
    brew services restart mysql

  • 查看服务状态:
    bash
    brew services list

  • 升级 MySQL 版本:
    当 Homebrew 仓库中的 MySQL 有了新版本,升级只需要两条命令:
    bash
    brew update
    brew upgrade mysql

    Homebrew 会自动处理新旧版本的替换和数据迁移(通常是无缝的,但重要数据仍建议先备份)。

  • 卸载 MySQL:
    如果你想彻底移除 MySQL:
    “`bash
    # 1. 停止服务
    brew services stop mysql

    2. 卸载程序包

    brew uninstall mysql

    3. (警告!)彻底清除数据

    如果你想把数据库文件也一并删除,请手动删除数据目录。

    执行此操作前请务必备份好你的数据!

    rm -rf /opt/homebrew/var/mysql
    “`


第六章:常见问题与解决方案 (FAQ)

  1. 问题:执行 mysql 命令提示 zsh: command not found: mysql

    • 原因: PATH 环境变量未正确配置。
    • 解决方案: 请参照【第四章 4.2】的步骤,检查并确保 ~/.zshrc 文件中已添加正确的路径,并已重新加载了配置文件 (source ~/.zshrc) 或重启了终端。
  2. 问题:brew services start mysql 失败,或 brew services list 显示 error

    • 原因: 可能是权限问题、端口冲突或旧的配置文件残留。
    • 解决方案:
      • 首先运行 brew doctor 检查环境问题。
      • 查看 MySQL 的日志文件寻找线索。日志文件通常位于 /opt/homebrew/var/mysql/你的主机名.err
      • 尝试手动启动一次查看详细错误信息:/opt/homebrew/opt/mysql/bin/mysql.server start
      • 终极解决方案:彻底卸载后重新安装(参考第五章的卸载步骤,特别是删除数据目录)。
  3. 问题:忘记了 root 密码怎么办?

    • 解决方案: 这是一个经典问题,可以通过安全模式重置密码。
      1. 停止 MySQL 服务:brew services stop mysql
      2. 使用跳过授权表的安全模式启动 MySQL:mysqld_safe --skip-grant-tables &
      3. 无密码连接 MySQL:mysql -u root
      4. mysql> 提示符下执行以下 SQL 来更新密码(以 MySQL 8.x 为例):
        sql
        FLUSH PRIVILEGES;
        ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
        FLUSH PRIVILEGES;
        EXIT;
      5. 杀死所有 mysqld 进程:killall mysqld
      6. 正常启动 MySQL 服务:brew services start mysql
      7. 现在你可以用新密码登录了。
  4. 问题:如何连接图形化界面工具(如 Sequel Pro, TablePlus, Navicat)?

    • 解决方案: 这些工具连接本地 Homebrew 安装的 MySQL 非常简单。
      • 连接类型/方式: Standard (TCP/IP)
      • 主机/Host: 127.0.0.1 (或 localhost)
      • 端口/Port: 3306 (默认)
      • 用户/User: root
      • 密码/Password: 你设置的 root 密码
      • 如果遇到连接问题,有些工具可能需要使用 Socket 方式连接。Socket 文件路径通常是 /tmp/mysql.sock。你可以在 MySQL 中通过 SHOW VARIABLES LIKE 'socket'; 查询到准确路径。

总结:大道至简,回归本源

在 M1/M2 Mac 上,借助 Homebrew 安装和管理 MySQL,我们告别了繁琐的手动配置和潜在的架构不匹配问题。整个过程遵循了“约定优于配置”的原则,实现了真正的“一键安装、轻松管理”。

通过本文的详细步骤,您不仅学会了如何“做”,更理解了“为什么”要这样做——从 Homebrew 在 Apple Silicon 上的特定路径,到 brew services 的便利,再到 mysql_secure_installation 的必要性。这套基于 Homebrew 的“正确姿势”,将为您在 Apple Silicon 平台上构建稳定、高效、纯净的开发环境打下坚实的基础,让您能更专注于代码和创造,而非环境的琐碎。现在,开启你的 M-chip Mac,尽情享受原生 ARM64 数据库带来的澎湃动力吧!

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部