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

Ubuntu 15.04 MySQL 5.6.25 中文支援配置:apt 安裝版雙配置文件修改實戰

     編輯:MySQL 綜合教學

Ubuntu 15.04 MySQL 5.6.25 中文支援配置:apt 安裝版雙配置文件修改實戰

Ubuntu apt-get install mysql-server 安裝的 MySQL 5.6.25 採用分離式配置佈局,預設字符集為 latin1,導致中文亂碼、Emoji 無法存儲。本文針對 apt 安裝版,給出精確的雙配置文件修改路徑、參數名稱(連字符版)、重啟驗證全流程。

配置文件結構定位

# 客戶端配置 (mysql 命令行、mysqldump 等)
/etc/mysql/conf.d/mysql.cnf

# 服務端配置 (mysqld 進程)
/etc/mysql/mysql.conf.d/mysqld.cnf

修改客戶端配置 /etc/mysql/conf.d/mysql.cnf

[mysql]
# 原文件通常只有 [mysql] 區塊標題,無具體參數
no-auto-rehash
default-character-set = utf8mb4

修改服務端配置 /etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
# 基礎連接參數(通常已存在,保持不變)
socket = /var/run/mysqld/mysqld.sock
port = 3306

# 核心字符集參數(注意:MySQL 5.6+ 必須用連字符名)
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

關鍵提醒: 舊版教程常寫 character_set_server (下劃線),MySQL 5.6+ 僅識別 character-set-server (連字符),寫錯將不生效。

重啟服務生效

sudo /etc/init.d/mysql restart
# 或 systemd
sudo systemctl restart mysql

驗證字符集全鏈路生效

mysql> SHOW VARIABLES LIKE '%char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

驗證標準: 除 character_set_system (固定 utf8) 與 character_set_filesystem (固定 binary) 外,其餘 6 個變量必須全為 utf8mb4。

⚠️ 存量數據庫遷移必讀

修改配置僅影響新建庫表。現有庫表保持原字符集 (latin1/utf8),需顯式遷移:

-- 庫級遷移
ALTER DATABASE `your_db` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;

-- 表級遷移 (會重建表,鎖表,大表謹慎)
ALTER TABLE `your_db`.`your_table` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

-- 批量生成遷移腳本
SELECT CONCAT('ALTER TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;')
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'your_db' AND TABLE_TYPE = 'BASE TABLE';

大表零停機遷移工具: pt-online-schema-change (Percona Toolkit) 或 gh-ost (GitHub)。

JDBC 連接參數同步設置

jdbc:mysql://host:3306/db?useUnicode=true&characterEncoding=utf8mb4&zeroDateTimeBehavior=convertToNull
# useUnicode=true 可省略,characterEncoding 指定即可自動啟用 Unicode 模式

總結

Ubuntu apt 版 MySQL 5.6 中文配置核心三步:1) 定位雙配置文件 → 2) 客戶端/服務端雙端設 utf8mb4 (參數名用連字符) → 3) 重啟驗證 6 大 character_set 變量。補上存量表遷移與 JDBC 參數同步,即可徹底解決中文亂碼、Emoji 存儲失敗、生僻字截斷等全字符集痛點。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved