萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> macOS 教學

Mac 安裝 MySQL 社群版(二進制壓縮包)完整手冊:手動部署、配置、服務管理

不使用 Homebrew、DMG 安裝包,而是直接部署 MySQL 官方提供的二進制壓縮包,能獲得最高版本控制彈性、多版本共存、可攜式部署能力。本文記錄在 macOS 上手動部署 MySQL 8.0/5.7 的標準化流程。

前置準備

  • 從 MySQL 官網 下載 macOS 通用二進制壓縮包(mysql-VERSION-macos10.14-x86_64.tar.gz 或 arm64 版)。
  • 建議安裝目錄:/usr/local/mysql-VERSION,符號連結 /usr/local/mysql 指向當前版本。
  • 建立專用使用者/群組 _mysql(macOS 通常預設存在)。

部署步驟

  1. 解壓縮與安裝:
    cd /usr/local
    sudo tar xzf ~/Downloads/mysql-8.0.36-macos14-x86_64.tar.gz
    sudo ln -s mysql-8.0.36-macos14-x86_64 mysql
    sudo chown -R _mysql:_mysql mysql-8.0.36-macos14-x86_64
    
  2. 初始化資料目錄:
    
    cd /usr/local/mysql
    sudo mkdir -p data
    sudo bin/mysqld --initialize-insecure --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
    # --initialize-insecure:產生無密碼 root 帳號(首次登入無需密碼,建議立即修改)
    # 生產環境請用 --initialize 產生隨機密碼(輸出至 stderr)
    
  3. 配置 my.cnf(/usr/local/mysql/my.cnf 或 /etc/my.cnf):
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
socket = /tmp/mysql.sock
pid-file = /usr/local/mysql/mysql.pid
log-error = /usr/local/mysql/data/error.log
# 二進制日誌
log_bin = mysql-bin
binlog_format = ROW
expire_logs_days = 7
max_binlog_size = 100M
# 字元集
character_set_server = utf8mb4
collation_server = utf8mb4_unicode_ci
# InnoDB 基礎調校
innodb_buffer_pool_size = 1G  # 視實體記憶體 50-70%
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 1
innodb_flush_method = O_DIRECT
# 連線
max_connections = 200
  1. 權限修正與 SSL 初始化:
    
    sudo chown -R root:mysql /usr/local/mysql
    sudo chown -R _mysql:mysql /usr/local/mysql/data
    sudo bin/mysql_ssl_rsa_setup --uid=_mysql --datadir=/usr/local/mysql/data
    
  2. 建立系統服務:

macOS 10.15+ (launchd 推薦)

建立 /Library/LaunchDaemons/com.mysql.mysqld.plist:






    Labelcom.mysql.mysqld
    ProgramArguments
    
        /usr/local/mysql/bin/mysqld
        --user=_mysql
        --basedir=/usr/local/mysql
        --datadir=/usr/local/mysql/data
    
    RunAtLoad
    KeepAlive
    WorkingDirectory/usr/local/mysql
    StandardOutPath/usr/local/mysql/data/mysql.stdout.log
    StandardErrorPath/usr/local/mysql/data/mysql.stderr.log


載入服務:

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysqld.plist
sudo launchctl start com.mysql.mysqld

舊版 / 通用:使用支援檔案 mysql.server


sudo cp /usr/local/mysql/support-files/mysql.server /usr/local/bin/mysql.server
sudo chmod +x /usr/local/bin/mysql.server
# 管理指令
sudo mysql.server start
sudo mysql.server stop
sudo mysql.server restart
sudo mysql.server status
  1. 首次登入與安全強化:
    
    # 無密碼登入 (initialize-insecure)
    /usr/local/mysql/bin/mysql -u root -p
    # 按 Enter 直接進入
    
    # 立即修改 root 密碼並移除匿名帳號、測試資料庫
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'StrongNewPassword';
    DELETE FROM mysql.user WHERE User='';
    DROP DATABASE IF EXISTS test;
    FLUSH PRIVILEGES;
    
  2. 環境變數:將 /usr/local/mysql/bin 加入 PATH(~/.zprofile 或 ~/.bash_profile)。

多版本共存管理

  • 不同版本安裝於 /usr/local/mysql-5.7、/usr/local/mysql-8.0 等獨立目錄。
  • /usr/local/mysql 符號連結指向當前作用版本。
  • 切換版本:sudo rm /usr/local/mysql && sudo ln -s /usr/local/mysql-5.7 /usr/local/mysql → 重啟服務。
  • 各版本獨立 data 目錄、my.cnf、socket、port(如 3306/3307)。

常用維護指令


# 狀態檢查
/usr/local/mysql/bin/mysqladmin -u root -p status
/usr/local/mysql/bin/mysqladmin -u root -p variables

# 備份
/usr/local/mysql/bin/mysqldump -u root -p --all-databases --single-transaction --routines --triggers > all_dbs_$(date +%F).sql

# 匯入
/usr/local/mysql/bin/mysql -u root -p < backup.sql

# 升級 (原地升級風險高,建議新版本平行部署遷移)

手動部署雖步驟較多,但賦予完全掌控權,適合生產環境標準化部署、多版本測試、教學示範。

copyright © 萬盛學電腦網 all rights reserved