Skip to content

MySQL 在 macOS 上安装

安装前准备

系统要求

操作系统版本MySQL 5.7 最低配置MySQL 8.0 最低配置生产环境推荐配置
macOS 10.15+ (Catalina)8GB RAM, 4CPU, 50GB 磁盘16GB RAM, 8CPU, 100GB 磁盘32GB+ RAM, 16+ CPU, 500GB+ SSD
macOS 11+ (Big Sur, Monterey, Ventura)8GB RAM, 4CPU, 50GB 磁盘16GB RAM, 8CPU, 100GB 磁盘32GB+ RAM, 16+ CPU, 500GB+ SSD
macOS 12+ (Monterey+)16GB RAM, 8CPU, 100GB 磁盘32GB RAM, 16CPU, 200GB 磁盘64GB+ RAM, 32+ CPU, 1TB+ SSD
macOS 13+ (Ventura+)16GB RAM, 8CPU, 100GB 磁盘32GB RAM, 16CPU, 200GB 磁盘64GB+ RAM, 32+ CPU, 1TB+ SSD

环境检查与准备

bash
# 检查 macOS 版本和芯片类型
sw_vers
uname -m

# 检查硬件资源
# 内存
sysctl hw.memsize | awk '{print $2/1024/1024/1024 " GB"}'
# CPU 核心数
sysctl hw.ncpu
# 磁盘空间
df -h
# 磁盘 I/O 性能测试
dd if=/dev/zero of=/tmp/test bs=1G count=1 oflag=dsync
rm /tmp/test

# 检查端口占用情况
lsof -i :3306 || echo "3306 端口未被占用"

# 检查是否已安装 MySQL
which mysql 2>/dev/null || echo "未安装 MySQL"
mysql --version 2>/dev/null || echo "未安装 MySQL"

# 检查系统防火墙状态
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate

安装必要工具

bash
# 安装 Xcode Command Line Tools
xcode-select --install

# 验证安装
xcode-select -p

安装方式选择

安装方式对比

安装方式优点缺点适用场景
Homebrew包管理便捷,自动依赖,易于升级,支持 Apple Silicon版本选择有限,默认配置可能不适合生产环境推荐,大多数用户,开发测试环境
DMG 安装包官方提供,图形化安装,适合新手升级不便,卸载麻烦,配置固定新手用户,快速部署
ZIP 压缩包高度自定义,无系统集成,适合生产环境配置复杂,需要手动管理服务高级用户,生产环境,需要精确控制
Docker隔离环境,快速部署,版本管理方便性能开销,数据管理复杂开发测试,隔离环境,CI/CD 流程

Homebrew 安装

安装 Homebrew(如未安装)

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

# 验证 Homebrew 安装
brew --version

# 配置 Homebrew 环境变量(如未自动配置)
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
eval "$(/opt/homebrew/bin/brew shellenv)"

使用 Homebrew 安装 MySQL

安装最新稳定版

bash
# 更新 Homebrew 包列表
brew update

# 安装 MySQL(默认安装最新稳定版)
brew install mysql

安装特定版本

bash
# 查看可用的 MySQL 版本
brew search mysql

# 安装 MySQL 8.0
brew install mysql@8.0

# 安装 MySQL 5.7(旧版本,仅 Intel 芯片支持)
brew install mysql@5.7

服务管理

bash
# 启动 MySQL 服务
brew services start mysql
# 或特定版本
brew services start mysql@8.0

# 停止 MySQL 服务
brew services stop mysql
# 或特定版本
brew services stop mysql@8.0

# 重启 MySQL 服务
brew services restart mysql
# 或特定版本
brew services restart mysql@8.0

# 查看服务状态
brew services list | grep mysql

配置与安全加固

初始化配置

bash
# 运行安全配置向导
mysql_secure_installation

配置选项建议

  • 验证密码组件:启用(Y
  • 密码策略强度:生产环境选择 2(STRONG),开发环境可选择 1(MEDIUM)
  • 设置 root 密码:使用强密码(长度≥12位,包含大小写字母、数字、特殊字符)
  • 删除匿名用户:删除(Y
  • 禁止 root 远程登录:生产环境选择 Y,开发环境可选择 N
  • 删除测试数据库:删除(Y
  • 刷新权限表:立即生效(Y

环境变量配置

bash
# 对于 MySQL 8.0(Apple Silicon)
echo 'export PATH="/opt/homebrew/opt/mysql@8.0/bin:$PATH"' >> ~/.zshrc

# 对于 MySQL 8.0(Intel 芯片)
echo 'export PATH="/usr/local/opt/mysql@8.0/bin:$PATH"' >> ~/.zshrc

# 更新环境变量
source ~/.zshrc

# 验证配置
mysql --version
which mysql

验证安装

bash
# 登录 MySQL
mysql -uroot -p

# 查看版本和状态
SELECT VERSION(), @@version_comment;
SHOW STATUS LIKE 'Uptime';

# 查看数据库列表
SHOW DATABASES;

# 退出 MySQL
exit;

DMG 安装包安装

下载 DMG 安装包

  1. 访问 MySQL 官方下载页
  2. 选择 macOS 作为操作系统
  3. 选择 DMG Archive 下载格式
  4. 选择对应芯片版本:
    • Apple Silicon:选择带有 arm64 标识的版本
    • Intel:选择带有 x86_64 标识的版本
  5. 点击 Download 按钮下载

安装步骤

  1. 双击下载的 DMG 文件(如 mysql-8.0.36-macos13-arm64.dmg
  2. 双击 pkg 安装文件 开始安装
  3. 按照安装向导操作
    • 点击「继续」→「继续」→「同意」
    • 选择安装类型(默认即可)→「安装」
    • 输入 macOS 管理员密码 →「安装软件」
    • 安装完成后,点击「关闭」

初始化配置

  1. 启动 MySQL 偏好设置

    • 打开「系统设置」→ 搜索「MySQL」→ 点击 MySQL 图标
    • 点击「Start MySQL Server」启动服务
    • 勾选「Automatically Start MySQL Server on Startup」设置开机自启
  2. 配置 root 密码

    • 首次启动会弹出提示框,点击「Initialize Database」
    • 选择加密方式:
      • 生产环境:「Use Strong Password Encryption」
      • 兼容性要求:「Use Legacy Password Encryption」
    • 设置 root 密码 → 点击「OK」
  3. 验证安装

bash
# 登录 MySQL
/usr/local/mysql/bin/mysql -uroot -p

# 查看版本
SELECT VERSION();

环境变量配置

bash
# 将 MySQL 添加到 PATH
# 对于 Intel 芯片
echo 'export PATH="/usr/local/mysql/bin:$PATH"' >> ~/.zshrc

# 对于 Apple Silicon 芯片
echo 'export PATH="/usr/local/mysql/bin:$PATH"' >> ~/.zshrc

# 更新环境变量
source ~/.zshrc

# 验证
mysql --version

ZIP 压缩包安装(生产环境推荐)

下载和解压

  1. 下载 ZIP 压缩包

    • 访问 MySQL 官方下载页
    • 选择 macOSZIP Archive 格式
    • 下载对应芯片版本(Intel 或 Apple Silicon)
  2. 解压并配置

    bash
    # 创建安装目录
    sudo mkdir -p /usr/local/mysql
    
    # 解压 ZIP 文件(替换为实际文件名)
    sudo tar -xzf mysql-8.0.36-macos13-arm64.zip -C /usr/local/
    
    # 创建软链接(便于版本管理)
    sudo ln -sf /usr/local/mysql-8.0.36-macos13-arm64 /usr/local/mysql
    
    # 设置权限
    sudo chown -R _mysql:_mysql /usr/local/mysql

创建配置文件

bash
# 创建配置目录和日志目录
sudo mkdir -p /usr/local/mysql/etc /usr/local/mysql/logs /usr/local/mysql/data /usr/local/mysql/tmp

# 创建生产环境配置文件
sudo vi /usr/local/mysql/etc/my.cnf

生产环境优化配置示例

ini
[mysqld]
# 基础设置
port = 3306
server-id = 1
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
tmpdir = /usr/local/mysql/tmp
socket = /tmp/mysql.sock
pid-file = /usr/local/mysql/mysql.pid

# 字符集设置
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

# 日志设置
log-error = /usr/local/mysql/logs/error.log
slow_query_log = 1
slow_query_log_file = /usr/local/mysql/logs/slow.log
long_query_time = 1
log_queries_not_using_indexes = 1
log_bin = /usr/local/mysql/logs/binlog
binlog_format = ROW
binlog_expire_logs_seconds = 604800
max_binlog_size = 1G

# InnoDB 设置
innodb_buffer_pool_size = 16G  # 物理内存的 50-70%
innodb_log_file_size = 2G
innodb_flush_log_at_trx_commit = 1  # 生产环境推荐 1(最高安全性)
innodb_file_per_table = 1
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_buffer_pool_instances = 8
innodb_flush_method = O_DIRECT  # 需要 SSD 支持
innodb_log_files_in_group = 4
innodb_doublewrite = 1  # 生产环境推荐开启

# 连接设置
max_connections = 2000
wait_timeout = 60
interactive_timeout = 60
back_log = 1024
max_connect_errors = 1000000

# 查询优化
table_open_cache = 4096
table_definition_cache = 2048
max_heap_table_size = 128M
tmp_table_size = 128M
join_buffer_size = 8M
read_buffer_size = 4M
read_rnd_buffer_size = 8M

# MySQL 8.0 特有配置
default_authentication_plugin = caching_sha2_password
innodb_dedicated_server = 0  # 生产环境建议手动配置

[mysql]
default-character-set = utf8mb4

[client]
port = 3306
default-character-set = utf8mb4
socket = /tmp/mysql.sock

[mysqldump]
quick
max_allowed_packet = 1G

初始化 MySQL

bash
# 进入 MySQL bin 目录
cd /usr/local/mysql/bin

# 初始化数据库(生成随机 root 密码)
sudo ./mysqld --initialize --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --defaults-file=/usr/local/mysql/etc/my.cnf

# 查看初始密码
sudo grep 'temporary password' /usr/local/mysql/logs/error.log

配置和启动服务

使用 launchd 启动(生产环境推荐)

  1. 创建 launchd 配置文件

    bash
    sudo vi /Library/LaunchDaemons/com.mysql.mysqld.plist

    配置内容

    xml
    <?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>Disabled</key>
        <false/>
        <key>Label</key>
        <string>com.mysql.mysqld</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/local/mysql/bin/mysqld</string>
            <string>--defaults-file=/usr/local/mysql/etc/my.cnf</string>
            <string>--user=_mysql</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>KeepAlive</key>
        <true/>
        <key>WorkingDirectory</key>
        <string>/usr/local/mysql</string>
        <key>StandardErrorPath</key>
        <string>/usr/local/mysql/logs/error.log</string>
        <key>StandardOutPath</key>
        <string>/dev/null</string>
    </dict>
    </plist>
  2. 加载并启动服务

    bash
    # 设置正确的权限
    sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysqld.plist
    sudo chmod 644 /Library/LaunchDaemons/com.mysql.mysqld.plist
    
    # 加载服务
    sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysqld.plist
    
    # 验证服务状态
    sudo launchctl list | grep mysql
    lsof -i :3306

手动启动(临时)

bash
# 手动启动 MySQL
cd /usr/local/mysql/bin
sudo ./mysqld_safe --user=_mysql --defaults-file=/usr/local/mysql/etc/my.cnf &

# 停止 MySQL
sudo ./mysqladmin -uroot -p shutdown

设置 root 密码和安全配置

bash
# 登录 MySQL(使用初始随机密码)
mysql -uroot -p --socket=/tmp/mysql.sock

# 设置新的 root 密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPassword123!';

# 创建专用 DBA 用户
CREATE USER 'dba_admin'@'localhost' IDENTIFIED BY 'DbaStrongPassword456!';
GRANT ALL PRIVILEGES ON *.* TO 'dba_admin'@'localhost' WITH GRANT OPTION;

# 安全加固
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%';
FLUSH PRIVILEGES;

# 退出 MySQL
exit;

Docker 安装

安装 Docker Desktop

  1. 访问 Docker 官方下载页
  2. 下载并安装 Docker Desktop for Mac
  3. 启动 Docker Desktop 并完成初始化配置
  4. 验证 Docker 安装:
    bash
    docker --version
    docker-compose --version

运行 MySQL 容器

bash
# 拉取 MySQL 8.0 镜像
docker pull mysql:8.0

# 运行 MySQL 容器(生产环境配置)
docker run -d \
  --name mysql-server \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=YourStrongPassword123! \
  -e MYSQL_DATABASE=mydb \
  -e MYSQL_USER=myuser \
  -e MYSQL_PASSWORD=MyUserPassword789! \
  -e MYSQL_INITDB_ARGS="--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci" \
  -v mysql-data:/var/lib/mysql \
  -v mysql-config:/etc/mysql/conf.d \
  --restart always \
  --cpus=4 \
  --memory=8g \
  mysql:8.0

# 检查容器状态
docker ps

# 进入容器内的 MySQL
docker exec -it mysql-server mysql -uroot -p

# 查看版本
SELECT VERSION();

Docker 高级配置

bash
# 创建自定义配置文件
mkdir -p ~/docker/mysql/conf
cat > ~/docker/mysql/conf/my.cnf << EOF
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
max_connections=1000
innodb_buffer_pool_size=4G
EOF

# 使用自定义配置运行容器
docker run -d \
  --name mysql-server \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=YourStrongPassword123! \
  -v mysql-data:/var/lib/mysql \
  -v ~/docker/mysql/conf:/etc/mysql/conf.d \
  --restart always \
  mysql:8.0

远程访问配置

配置 MySQL 允许远程连接

sql
-- 登录 MySQL
mysql -uroot -p

-- 创建允许远程访问的用户
CREATE USER 'dba_remote'@'%' IDENTIFIED BY 'RemoteStrongPassword789!';
GRANT ALL PRIVILEGES ON *.* TO 'dba_remote'@'%' WITH GRANT OPTION;

-- 或限制特定 IP 段访问
CREATE USER 'dba_remote'@'192.168.1.%' IDENTIFIED BY 'RemoteStrongPassword789!';
GRANT ALL PRIVILEGES ON *.* TO 'dba_remote'@'192.168.1.%' WITH GRANT OPTION;

-- 刷新权限
FLUSH PRIVILEGES;

配置 macOS 防火墙

bash
# 查看防火墙状态
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate

# 允许 MySQL 传入连接
# 方法 1:通过应用程序
 sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/local/mysql/bin/mysqld
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/local/mysql/bin/mysqld

# 方法 2:直接允许端口
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/local/mysql/bin/mysqld
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/local/mysql/bin/mysqld

# 重启防火墙使配置生效
sudo pkill -HUP socketfilterfw

测试远程连接

从另一台机器测试连接:

bash
# 使用 MySQL 客户端连接
mysql -h <macos-mysql-ip> -udba_remote -p

# 使用 telnet 测试端口连通性
telnet <macos-mysql-ip> 3306

# 使用 nc 测试端口连通性
nc -zv <macos-mysql-ip> 3306

自动化安装脚本

Homebrew 自动化安装脚本

bash
#!/bin/bash

# MySQL 安装配置
MYSQL_VERSION="8.0"
ROOT_PASSWORD="MySQLRootPassword123!"
DBA_PASSWORD="DBAAdminPassword456!"

# 检查并安装 Homebrew
if ! command -v brew &> /dev/null; then
    echo "正在安装 Homebrew..." -e "\033[32m"
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    eval "$(/opt/homebrew/bin/brew shellenv)"
fi

# 更新 Homebrew
echo "正在更新 Homebrew..." -e "\033[32m"
brew update

# 安装 MySQL
echo "正在安装 MySQL $MYSQL_VERSION..." -e "\033[32m"
brew install mysql@$MYSQL_VERSION

# 启动 MySQL 服务
echo "正在启动 MySQL 服务..." -e "\033[32m"
brew services start mysql@$MYSQL_VERSION

# 等待服务启动
sleep 10

# 配置环境变量
echo "正在配置环境变量..." -e "\033[32m"
# 检测芯片类型
CHIP=$(uname -m)
if [ "$CHIP" = "arm64" ]; then
    echo 'export PATH="/opt/homebrew/opt/mysql@$MYSQL_VERSION/bin:$PATH"' >> ~/.zshrc
else
    echo 'export PATH="/usr/local/opt/mysql@$MYSQL_VERSION/bin:$PATH"' >> ~/.zshrc
fi
source ~/.zshrc

# 获取初始密码
echo "正在获取初始密码..." -e "\033[32m"
if [ "$CHIP" = "arm64" ]; then
    INIT_LOG="/opt/homebrew/var/log/mysql/error.log"
else
    INIT_LOG="/usr/local/var/log/mysql/error.log"
fi
INITIAL_PASSWORD=$(grep 'temporary password' $INIT_LOG | tail -1 | awk '{print $NF}')
echo "初始密码: $INITIAL_PASSWORD" -e "\033[33m"

# 设置新密码
echo "正在设置新密码..." -e "\033[32m"
mysql -uroot -p"$INITIAL_PASSWORD" --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '$ROOT_PASSWORD';" 2>/dev/null

# 运行安全配置
echo "正在配置安全选项..." -e "\033[32m"
mysql -uroot -p"$ROOT_PASSWORD" -e "DELETE FROM mysql.user WHERE User=''; DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); DROP DATABASE IF EXISTS test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%'; FLUSH PRIVILEGES;"

# 创建 DBA 用户
echo "正在创建 DBA 用户..." -e "\033[32m"
mysql -uroot -p"$ROOT_PASSWORD" -e "CREATE USER 'dba_admin'@'localhost' IDENTIFIED BY '$DBA_PASSWORD'; GRANT ALL PRIVILEGES ON *.* TO 'dba_admin'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;"

# 配置防火墙
echo "正在配置防火墙..." -e "\033[32m"
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add $(which mysqld) 2>/dev/null || true
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp $(which mysqld) 2>/dev/null || true
sudo pkill -HUP socketfilterfw 2>/dev/null || true

# 验证安装
echo "正在验证安装..." -e "\033[32m"
mysql -udba_admin -p"$DBA_PASSWORD" -e "SELECT VERSION(), @@version_comment;"

# 输出安装结果
echo "\n======================================" -e "\033[33m"
echo "MySQL $MYSQL_VERSION 安装完成!" -e "\033[32m"
echo "======================================" -e "\033[33m"
echo "Root 密码:$ROOT_PASSWORD" -e "\033[36m"
echo "DBA 密码:$DBA_PASSWORD" -e "\033[36m"
echo "服务状态:已启动(开机自启)" -e "\033[36m"
echo "环境变量:已配置" -e "\033[36m"
echo "防火墙:已允许 MySQL 连接" -e "\033[36m"
echo "访问命令:mysql -udba_admin -p'$DBA_PASSWORD'" -e "\033[36m"
echo "======================================" -e "\033[33m"
echo -e "\033[0m"

使用方法

bash
# 保存脚本为 install_mysql.sh
# 赋予执行权限
chmod +x install_mysql.sh

# 执行脚本
./install_mysql.sh

常见问题解决

服务无法启动

  • 检查配置文件语法

    bash
    mysqld --defaults-file=/usr/local/mysql/etc/my.cnf --validate-config
  • 查看错误日志

    bash
    # Homebrew 安装
    tail -f /opt/homebrew/var/log/mysql/error.log
    
    # ZIP 安装
    tail -f /usr/local/mysql/logs/error.log
    
    # DMG 安装
    tail -f /usr/local/mysql/data/$(hostname).err
  • 权限问题

    bash
    # 确保数据目录权限正确
    sudo chown -R _mysql:_mysql /usr/local/mysql/data
  • 端口占用

    bash
    lsof -i :3306
    kill -9 <pid> 2>/dev/null || true

忘记 root 密码

  1. 停止 MySQL 服务

    bash
    # Homebrew 安装
    brew services stop mysql
    
    # ZIP 安装(launchd)
    sudo launchctl unload -w /Library/LaunchDaemons/com.mysql.mysqld.plist
    
    # DMG 安装
    # 通过系统偏好设置停止服务
  2. 以跳过授权表模式启动

    bash
    # Homebrew 安装
    mysqld_safe --skip-grant-tables --skip-networking &
    
    # ZIP 安装
    cd /usr/local/mysql/bin
    sudo ./mysqld_safe --skip-grant-tables --skip-networking --defaults-file=/usr/local/mysql/etc/my.cnf &
  3. 无密码登录并修改密码

    bash
    mysql -uroot
    
    USE mysql;
    
    # MySQL 8.0
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPassword123!';
    
    # 刷新权限
    FLUSH PRIVILEGES;
    
    # 退出
    exit;
  4. 重启服务

    bash
    # 终止跳过授权表的进程
    pkill -f "mysqld_safe"
    
    # 启动正常服务
    brew services start mysql
    # 或
    sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysqld.plist

无法连接到 MySQL 服务器

  • 检查服务状态

    bash
    brew services list | grep mysql
    sudo launchctl list | grep mysql
  • 检查 socket 文件

    bash
    ls -la /tmp/mysql.sock
  • 检查 MySQL 进程

    bash
    ps aux | grep mysqld
  • 检查防火墙设置

    bash
    sudo /usr/libexec/ApplicationFirewall/socketfilterfw --listapps

卸载 MySQL

Homebrew 安装的卸载

bash
# 停止服务
brew services stop mysql

# 卸载 MySQL
brew uninstall mysql

# 删除相关文件
rm -rf /opt/homebrew/var/mysql 2>/dev/null || rm -rf /usr/local/var/mysql
rm /opt/homebrew/etc/my.cnf 2>/dev/null || rm /usr/local/etc/my.cnf
rm -rf ~/.mysql_history

# 删除环境变量
# 编辑 ~/.zshrc,移除 MySQL 相关的 PATH 设置

DMG 安装的卸载

  1. 停止服务:通过系统偏好设置停止 MySQL 服务

  2. 删除应用和文件

    bash
    # 删除应用程序

sudo rm -rf /Applications/MySQL/

删除数据和配置

sudo rm -rf /usr/local/mysql sudo rm /etc/my.cnf

删除 launchd 配置

sudo rm /Library/LaunchDaemons/com.mysql.mysqld.plist

删除日志

sudo rm -rf /var/log/mysql*

删除用户和组(可选)

sudo dscl . -delete /Users/_mysql sudo dscl . -delete /Groups/_mysql

删除环境变量

编辑 ~/.zshrc,移除 MySQL 相关的 PATH 设置


### ZIP 安装的卸载

```bash
# 停止服务
sudo launchctl unload -w /Library/LaunchDaemons/com.mysql.mysqld.plist

# 删除服务配置
sudo rm /Library/LaunchDaemons/com.mysql.mysqld.plist

# 删除 MySQL 目录
sudo rm -rf /usr/local/mysql /usr/local/mysql-*

# 删除配置文件
sudo rm /etc/my.cnf

# 删除环境变量
# 编辑 ~/.zshrc,移除 MySQL 相关的 PATH 设置

Docker 安装的卸载

bash
# 停止并删除容器
docker stop mysql-server
docker rm mysql-server

# 删除数据卷
docker volume rm mysql-data mysql-config

# 删除镜像
docker rmi mysql:8.0

版本差异与升级

MySQL 5.7 与 8.0 在 macOS 上的主要差异

特性MySQL 5.7MySQL 8.0
操作系统支持支持 macOS 10.12+支持 macOS 10.13+
Apple Silicon 支持不支持支持
默认字符集latin1utf8mb4
默认认证插件mysql_native_passwordcaching_sha2_password
数据字典文件系统内置数据字典
JSON 支持基础支持增强支持(JSON_TABLE、JSON_PATH 等)
窗口函数不支持支持
通用表表达式 (CTE)不支持支持
内存占用较低较高
性能良好更好(特别是并发性能)
安全性良好增强(密码策略、审计日志等)

升级 MySQL

Homebrew 升级

bash
# 备份数据
mysqldump -uroot -p --all-databases --routines --triggers --events > all_databases_backup.sql

# 升级 MySQL
brew update
brew upgrade mysql

# 重启服务
brew services restart mysql

# 运行升级检查
mysql_upgrade -uroot -p

# 验证升级
mysql -uroot -p -e "SELECT VERSION();"
mysqlcheck -uroot -p --all-databases

跨版本升级注意事项

  1. 备份数据

    bash
    # 全量备份
    mysqldump -uroot -p --all-databases --routines --triggers --events > all_databases_backup.sql
    
    # 备份配置文件
    cp /usr/local/mysql/etc/my.cnf /usr/local/mysql/etc/my.cnf.bak
  2. 检查升级兼容性

    bash
    # 使用 MySQL Shell 进行升级前检查
    mysqlsh -- util checkForServerUpgrade root@localhost:3306
  3. 测试升级:在测试环境中先进行升级测试

  4. 升级后验证

    bash
    # 运行升级检查工具
    mysql_upgrade -uroot -p
    
    # 验证数据完整性
    mysqlcheck -uroot -p --all-databases
    
    # 检查错误日志
    tail -f /usr/local/mysql/logs/error.log

生产环境最佳实践

  1. 使用专用服务器:生产环境建议使用专用的 macOS Server 或 Linux 服务器
  2. 使用 SSD 存储:显著提升 MySQL 性能,特别是随机读写性能
  3. 合理配置内存
    • innodb_buffer_pool_size 设置为物理内存的 50-70%
    • 预留足够内存给操作系统和其他服务
  4. 启用二进制日志:用于数据恢复和主从复制
  5. 配置慢查询日志:便于性能分析和优化
  6. 定期备份
    • 配置自动备份策略(全量备份 + 增量备份)
    • 备份到异地存储
    • 定期测试备份恢复
  7. 监控与告警
    • 使用 MySQL Workbench、Zabbix 或 Prometheus + Grafana 监控
    • 监控关键指标:连接数、查询响应时间、慢查询数、磁盘空间等
  8. 安全加固
    • 使用强密码策略
    • 限制远程访问 IP
    • 定期更新 MySQL 版本
    • 启用审计日志
    • 配置防火墙
  9. 合理设置服务账户
    • 使用专用的低权限账户运行 MySQL 服务
    • 避免使用 root 账户
  10. 文档化配置:记录安装配置过程、版本信息和重要参数
  11. 定期维护
    • 定期优化表:`OPTIMIZE TABLE table_name;
    • 定期分析表:`ANALYZE TABLE table_name;
    • 定期检查碎片:`SHOW TABLE STATUS LIKE 'table_name';

总结

MySQL 在 macOS 上的安装方式多样,包括 Homebrew、DMG 安装包、ZIP 压缩包和 Docker。生产环境推荐使用 ZIP 压缩包方式,便于精确控制配置和管理;开发测试环境推荐使用 Homebrew,安装便捷易于升级。

在安装过程中,需要根据业务需求选择合适的 MySQL 版本,配置合理的系统参数和安全设置,并进行充分的测试和验证。自动化脚本可以提高安装效率,减少人为错误,适合批量部署场景。

无论选择哪种安装方式,都应遵循最佳实践,包括设置强密码、配置安全加固、合理调整参数、定期更新和备份数据,确保 MySQL 服务能够稳定、安全地运行。