首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Linux/macOS/Unix 通用 MySQL 字符集修改為 utf8mb4:正確配置 [client] 與 [mysqld] 避免 Error 2003

     編輯:MySQL 綜合教學

網上流傳在 [mysqld] 加 default-character-set=utf8 會導致 MySQL 無法啟動。正確做法:[client] 設客戶端字符集,[mysqld] 設服務端字符集與排序規則。

錯誤示範(導致 Error 2003)

[mysqld]
default-character-set = utf8  # ❌ 服務端不認此參數,啟動失敗

正確配置 /etc/my.cnf

[client]
default-character-set = utf8mb4

[mysqld]
default-storage-engine = INNODB
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

# 可選:強制客戶端連線字符集
[mysql]
default-character-set = utf8mb4

關鍵點解析

macOS 專用:無 /etc/my.cnf 怎麼辦?

  1. 複製範本:sudo cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
  2. 編輯上述參數。
  3. 重啟:sudo /Library/StartupItems/MySQLCOM/MySQLCOM restart

Linux 重啟

systemctl restart mysqld
# 或
service mysql restart

驗證生效

mysql -e "SHOW VARIABLES LIKE 'character_set%';"
mysql -e "SHOW VARIABLES LIKE 'collation%';"
-- 應見 character_set_server=utf8mb4, collation_server=utf8mb4_general_ci

避坑提醒

  • utf8 vs utf8mb4:MySQL utf8 實為 utf8mb3(最多 3 字節),**不支援 Emoji/補充字符**。生產環境**強制 utf8mb4**。
  • 既有表/庫不自動轉換:需逐表 ALTER TABLE t CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;。
  • 應用層連線字符集:JDBC characterEncoding=utf8mb4、Python charset='utf8mb4'、Go charset=utf8mb4,否則握手仍用 latin1。

總結

MySQL 字符集配置核心:**客戶端讀 default-character-set,服務端讀 character-set-server/collation-server**。/etc/my.cnf 分區正確配置,重啟驗證,再配合應用層指定 utf8mb4,徹底解決中文亂碼與 Emoji 存儲問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
參數作用域說明
default-character-set客戶端[client]、[mysql]、[mysqldump] 等讀取,影響連線握手字符集
character-set-server服務端Server 級預設字符集,新建庫/表繼承
collation-server服務端Server 級預設排序規則
default-storage-engine服務端建表預設引擎,建議 InnoDB