| 維度 | 官方 DMG | Homebrew |
|---|---|---|
| 安裝包 | .dmg 含 pkg + StartupItem + PrefPane | brew install mysql |
| 路徑 | /usr/local/mysql- | /opt/homebrew/opt/mysql (Apple Silicon) / /usr/local/opt/mysql (Intel) |
| Socket | /tmp/mysql.sock | /tmp/mysql.sock (可配置) |
| 啟動管理 | LaunchDaemon / PrefPane / mysql.server | brew services start mysql |
| 版本切換 | 手動重裝 | brew switch mysql 5.7 / brew link mysql@5.7 |
| 推薦場景 | 生產一致性、GUI 偏好、單版本長期 | 開發多版本並行、包管理習慣 |
mysql--macos-x86_64.dmg mysql-.pkg MySQLStartupItem.pkg(開機自啟)MySQL.prefPane(系統偏好設定面板)
echo 'export PATH="/usr/local/mysql/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
mysqladmin -u root password 'new_password'
brew install mysql@8.0 # 或 mysql@5.7
brew services start mysql@8.0
# 臨時啟動不開機自啟
/opt/homebrew/opt/mysql@8.0/bin/mysqld_safe --datadir=/opt/homebrew/var/mysql &
現象:Can't connect to local MySQL server through socket '/var/mysql/mysql.sock'
原因:PHP 預設找 /var/mysql/mysql.sock,MySQL 實際建在 /tmp/mysql.sock。
mysql.default_socket = /tmp/mysql.sock / pdo_mysql.default_socket = /tmp/mysql.socksudo mkdir -p /var/mysql && sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock[client] socket = /tmp/mysql.sockDMG 內建 MySQLStartupItem.pkg 屬舊式 StartupItems,macOS 10.10+ 建議用 launchd:
sudo tee /Library/LaunchDaemons/com.mysql.mysqld.plist > /dev/null <<'EOF'
Label com.mysql.mysqld
ProgramArguments
/usr/local/mysql/bin/mysqld_safe
--user=mysql
RunAtLoad
KeepAlive
StandardErrorPath /var/log/mysql/error.log
StandardOutPath /var/log/mysql/output.log
EOF
sudo mkdir -p /var/log/mysql && sudo chown mysql:mysql /var/log/mysql
sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysqld.plist
# ~/.zshrc
alias mysql='/usr/local/mysql/bin/mysql'
alias mysqladmin='/usr/local/mysql/bin/mysqladmin'
alias mysqldump='/usr/local/mysql/bin/mysqldump'
alias mysql-start='sudo launchctl start com.mysql.mysqld'
alias mysql-stop='sudo launchctl stop com.mysql.mysqld'
alias mysql-status='sudo launchctl list | grep mysql'
macOS 裝 MySQL:生產一致性選官方 DMG,開發多版本選 Homebrew。必解決 Socket 路徑衝突,建議用 launchd 管理自啟,配上幾個 alias 終端操作絲滑。