在 macOS 上開發時,MySQL 的安裝、移除與字元集配置常讓開發者頭痛。本文整理實測可行的完整移除步驟,並說明如何正確設定 UTF-8 中文支援,避免亂碼困擾。
官方安裝包 (DMG) 安裝的 MySQL 文件分散在多個目錄,單純拖曳至垃圾桶無法乾淨移除。請依序執行以下終端機指令(需 sudo 權限):
sudo pkill -f mysql sudo launchctl unload -w /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist 2>/dev/null
sudo rm -rf /usr/local/mysql sudo rm -rf /usr/local/mysql* sudo rm -rf /Library/StartupItems/MySQLCOM sudo rm -rf /Library/PreferencePanes/My* sudo 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.*
sudo vim /etc/hostconfig # 找到並刪除或註解掉:MYSQLCOM=-YES-
sudo rm -rf /tmp/mysql* sudo rm -rf /var/run/mysqld
rm -f ~/.mysql_history rm -f ~/.my.cnf
提醒:執行rm -rf請三思確認路徑,建議先用ls列出將被刪除的檔案。
MySQL 8.0 預設已支援 utf8mb4,但舊版或特定安裝方式仍需手動配置。核心原則:資料庫、資料表、連線、客戶端全部統一為 utf8mb4。
sudo cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf sudo vim /etc/my.cnf
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect = 'SET NAMES utf8mb4' skip-character-set-client-handshake # 強制忽略客戶端字元集要求 # InnoDB 建議設定 default-storage-engine = InnoDB innodb_file_per_table = 1
sudo /usr/local/mysql/support-files/mysql.server restart
mysql -u root -p -e "SHOW VARIABLES LIKE 'character_set%'; SHOW VARIABLES LIKE 'collation%';"
預期輸出關鍵變數皆為 utf8mb4 或 utf8mb4_unicode_ci。
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE mytable CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
$dsn = "mysql:host=127.0.0.1;dbname=mydb;charset=utf8mb4";
$pdo = new PDO($dsn, $user, $pass, [
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci"
]);
utf8 僅支援 3 位元組字元(不含 Emoji、部分生僻字),務必使用 utf8mb4。utf8mb4_unicode_ci 依 Unicode 標準排序(準確),utf8mb4_general_ci 較快但排序不精確。建議統一用 unicode_ci。CONVERT TO CHARACTER SET 會重寫資料,大表操作請離峰時段執行並先備份。macOS 上移除 MySQL 需清理 /usr/local、/Library、~/Library、/var/db/receipts 等多處殘留;中文支援的關鍵在於 my.cnf 統一設定 utf8mb4 並重啟服務。養成新建資料庫即指定字元集的習慣,可從根源杜絕亂碼問題。