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

MySQL 啟用中文支援:從編譯參數到字元集配置完整實作

     編輯:MySQL 綜合教學

預設編譯的 MySQL 常不支援中文字元集 (GBK/Big5),導致中文資料存取亂碼。本文記錄在 Linux (Slackware 為例) 上重新編譯安裝 MySQL 4.x,內建 GBK/UTF-8 支援,並配置啟動參數與資料庫字元集的完整流程。

1. 移除系統預裝 MySQL 並建立專用帳號

removepkg mysql
groupadd mysql
useradd -g mysql -s /bin/bash -d /app/mysql mysql
mkdir -p /app/mysql
chown -R mysql:mysql /app/mysql

2. 下載原始碼並編譯安裝 (關鍵:指定字元集)

tar -zxvf mysql-VERSION.tar.gz
cd mysql-VERSION

CFLAGS="-O3 -mcpu=pentium3" \
CXX=gcc \
CXXFLAGS="-O3 -mcpu=pentium3 -felide-constructors" \
./configure \
  --prefix=/app/mysql \
  --with-charset=gbk \
  --with-extra-charsets="gbk,gb2312,big5,utf8" \
  --with-unix-socket-path=/etc/mysql.sock \
  --enable-local-infile \
  --enable-thread-safe-client \
  --enable-assembler \
  --with-client-ldflags=-all-static \
  --with-mysqld-ldflags=-all-static

make && make install
  • --with-charset=gbk:預設字元集設為 GBK。
  • --with-extra-charsets:額外編入 GB2312、Big5、UTF-8 支援。
  • -mcpu:依 CPU 型號優化 (如 pentium3, athlon-xp 等)。

3. 初始化資料目錄與啟動驗證


cp support-files/my-medium.cnf /etc/my.cnf
cd /app/mysql
bin/mysql_install_db --user=root
chown -R root .
chown -R mysql var
chgrp -R mysql .

# 啟動時指定預設字元集
bin/mysqld_safe --user=root --default-character-set=gbk &

# 設定 root 密碼
bin/mysqladmin -u root password 'new-password'

# 驗證字元集
bin/mysql -u root --default-character-set=gbk -p
mysql> STATUS;
...
Server characterset: gbk
Db characterset: gbk
Client characterset: gbk
Conn. characterset: gbk
...

4. 資料庫/資料表層級字元集設計最佳實務

建議:在 CREATE DATABASE 指定預設字元集,建表時無需逐欄位聲明。


CREATE DATABASE dbCN DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
USE dbCN;
CREATE TABLE cn (
  zh CHAR(10) NOT NULL,
  `中文` INT(11) NOT NULL
) ENGINE=MYISAM;

INSERT INTO cn VALUES ('真的?', 1);
SELECT * FROM cn;
+--------+------+
| zh     | 中文 |
+--------+------+
| 真的? |    1 |
+--------+------+

舊 UTF-8 資料庫中需支援中文欄位:單獨為欄位指定字元集:


CREATE TABLE `test`.`cn` (
  `zh` CHAR(10) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NOT NULL,
  `中文` INT(11) NOT NULL
) ENGINE=MYISAM;

5. 設定開機自啟與預設字元集

編輯 /etc/rc.d/rc.mysqld:

  • 修改路徑指向 /app/mysql/bin/mysqld_safe 與 /app/mysql/var/web.pid
  • 啟動參數加入 --user=root --default-character-set=gbk

小結

重新編譯並正確配置字元集,是徹底解決 MySQL 中文亂碼的根本之道。生產環境建議統一採用 UTF-8 (utf8mb4) 作為預設字元集,避免 GBK/Big5 相容性問題,並確保應用程式、連線、資料庫、資料表、欄位五層字元集一致。

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