macOS 上通過官方 DMG/PKG 安裝的 MySQL,卸載需手動清理多個目錄;中文亂碼問題則需統一字符集為 utf8mb4。本文提供經驗證的徹底卸載命令集與零遺漏的字符集配置清單。
sudo pkill -f mysqld
# 或系統偏好設置 → MySQL → Stop MySQL Server
sudo rm /usr/local/mysql # 符號鏈接
sudo rm -rf /usr/local/mysql* # 所有版本安裝目錄
sudo rm -rf /Library/StartupItems/MySQLCOM # 啟動項 (舊版)
sudo rm -rf /Library/PreferencePanes/My* # 系統偏好面板
sudo vim /etc/hostconfig # 刪除 MYSQLCOM=-YES- 行 (極舊版)
rm -rf ~/Library/PreferencePanes/My* # 用戶級偏好面板
sudo rm -rf /Library/Receipts/mysql* # 安裝收據
sudo rm -rf /Library/Receipts/MySQL*
sudo rm -rf /var/db/receipts/com.mysql.*
補充:Homebrew 安裝則用 brew uninstall mysql && brew cleanup,數據目錄默認在 /usr/local/var/mysql 需手動刪除。
sudo cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
# 或任意 *.cnf 模板
[client]
default-character-set = utf8mb4 # 客戶端默認字符集
[mysql]
default-character-set = utf8mb4 # mysql 命令行客戶端
[mysqld]
# 基礎存儲引擎與字符集
default-storage-engine = InnoDB
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci # 推薦 _unicode_ci 排序更準確
# 可選:禁用大小寫敏感 (如需)
# lower_case_table_names = 1
# 可選: 跳過客戶端字符集握手 (強制服務端字符集)
# skip-character-set-client-handshake
sudo /usr/local/mysql/support-files/mysql.server restart
# 或系統偏好設置 → MySQL → Start
# 登錄驗證
mysql -u root -p -e "SHOW VARIABLES LIKE 'character_set%'; SHOW VARIABLES LIKE 'collation%';"
# 期望輸出:client/connection/results/database/server 均為 utf8mb4,collation 為 utf8mb4_unicode_ci
| 現象 | 原因 | 解決 |
|---|---|---|
插入中文報錯 Incorrect string value | 表/列字符集仍為 latin1/utf8 | ALTER TABLE tbl CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; |
| Emoji 存儲變成 ???? | 使用 utf8 (3字節) 而非 utf8mb4 (4字節) | 全鏈路統一 utf8mb4:連接、庫、表、列 |
| 排序不符合中文習慣 | 校對規則用 _general_ci 或 _bin | 改用 utf8mb4_unicode_ci 或 utf8mb4_zh_0900_as_cs (8.0+) |
| 配置不生效 | 讀取了其它 my.cnf (如 ~/.my.cnf) | mysql --help | grep my.cnf 確認加載順序,刪除干擾文件 |
macOS MySQL 運維口訣:卸載清 10 個目錄、配置改 3 個 section、驗證看 character_set%、表轉 utf8mb4、Emoji 不再愁。將 /etc/my.cnf 納入版本管理,新機器一鍵部署。