預設 MySQL 非中文友善,GBK/UTF8 轉換消耗資源。方案:重新編譯支援 GBK、資料庫/表/欄位層級統一聲明字符集。
# 移除系統自帶
removepkg mysql
# 建立用戶/目錄
groupadd mysql
mkdir /app/mysql && chmod 744 /app/mysql
useradd -g mysql -s /bin/bash -p /app/mysql mysql
chown -R mysql.mysql /app/mysql
# 下載解壓
gunzip < mysql-VERSION.tar.gz | tar xvf -
cd mysql-VERSION
# 編譯參數(針對 CPU 優化 -mcpu=pentium3 視硬體調整)
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
# 初始化
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 .
# 啟動並設定 root 密碼
./bin/mysqld_safe --user=root --default-character-set=gbk &
./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
CREATE TABLE `test`.`cn` (
`zh` CHAR(10) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NOT NULL,
`中文` INT(11) NOT NULL
) ENGINE=MYISAM;
CHARACTER SET 寫 gb2312 或 gbk 均可,gbk 較優(含擴展字)。
CREATE DATABASE dbCN DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
CREATE TABLE `dbCN`.`cn` (
`zh` CHAR(10) NOT NULL,
`中文` INT(11) NOT NULL
) ENGINE=MYISAM;
-- 無需欄位級聲明,自動繼承資料庫級 gbk
修改 /etc/rc.d/rc.mysqld:
/app/mysql/bin/mysqld_safe/app/mysql/var/web.pid--user=root --default-character-set=gbk新專案**直接使用 utf8mb4**,避免 GBK 相容性問題,僅在維護舊系統時採用本文方案。