首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 5.5/5.6/5.7 修改預設字元集為 UTF8MB4 圖文步驟 (含 my.cnf 配置與驗證)

     編輯:MySQL 資料庫相關知識

MySQL 5.x 系列修改預設字元集標準流程

MySQL 5.5/5.6/5.7 預設 latin1,需修改 /etc/mysql/my.cnf (或 /etc/my.cnf) 並重啟服務。以下為標準步驟,適用 Ubuntu/Debian/CentOS (路徑微調)。

1. 停止服務

service mysql stop
# 或 systemctl stop mysqld

2. 編輯配置文件

vim /etc/mysql/my.cnf
# 在 [mysqld] 區段下新增兩行
character_set_server = utf8mb4
init_connect = 'SET NAMES utf8mb4'

# 建議同時在 [client] 和 [mysql] 區段加入
[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

3. 重新啟動服務

service mysql start
# 或 systemctl start mysqld

4. 驗證修改結果

mysql -uroot -p -e "SHOW VARIABLES LIKE 'character%';"
# 預期輸出關鍵變數均為 utf8mb4
# character_set_client | utf8mb4
# character_set_connection | utf8mb4
# character_set_database | utf8mb4
# character_set_results | utf8mb4
# character_set_server | utf8mb4
# character_set_system | utf8mb4

5. 現有資料庫/表字元集轉換 (必要步驟)

配置修改僅影響新建物件,現有資料需手動轉換:

-- 資料庫層級
ALTER DATABASE db_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

-- 表層級 (轉換資料,大表鎖表久)
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 欄位層級 (單欄轉換)
ALTER TABLE tbl_name MODIFY col_name VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

6. 關鍵參數說明

  • character_set_server:伺服器層預設字元集,新建資料庫/表繼承此值。
  • init_connect:非 SUPER 權限用戶連線時自動執行,確保會話層字元集一致。
  • collation_server:建議同步設為 utf8mb4_unicode_ci (Unicode 標準排序) 或 utf8mb4_0900_ai_ci (8.0 新排序規則)。

7. 常見問題排查

現象原因解決
修改後仍顯示 latin1配置文件區段錯誤/未重啟/讀取了其它 my.cnfmysql --help | grep my.cnf 確認讀取順序;ps aux | grep mysqld 確認啟動參數
啟動失敗 Unknown variable參數名拼寫錯誤/版本不支援檢查拼寫;5.7 支援 utf8mb4,5.5 需確認版本 ≥ 5.5.3
應用亂碼應用連線未指定 charsetJDBC 加 characterEncoding=utf8mb4;PHP PDO 加 charset=utf8mb4
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved