在 Debian Etch 上手動部署 MySQL 5.0.27 ICC 優化版,並構建 **全鏈路 UTF-8 環境**(OS、MySQL、JDBC、Resin、Spring、Hibernate),實現中文零亂碼。本文記錄標準化安裝步驟與關鍵配置。
latin1,**必須顯式配置**。MySQL-standard-5.0.27-Linux-i686-icc-glibc23.tar.gz(ICC 比 GCC 性能提升 10~20%)。cd /usr/local
tar zxvf MySQL-standard-5.0.27-Linux-i686-icc-glibc23.tar.gz
ln -s mysql-standard-5.0.27-linux-i686-icc-glibc23 mysql
groupadd mysql && useradd -g mysql mysqlcd /usr/local/mysql && ./scripts/mysql_install_db --user=mysqlchown -R root .
chown -R mysql data
chgrp -R mysql .
[mysqld]
default-storage-engine = INNODB
character-set-server = utf8
collation-server = utf8_general_ci
default-character-set = utf8
skip-bdb
./bin/mysqld_safe --user=mysql &./bin/mysqladmin -u root -p password 'new-password'mysql> CREATE USER 'test'@'localhost' IDENTIFIED BY 'test-pwd';
mysql> CREATE DATABASE testdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> GRANT ALL ON testdb.* TO 'test'@'localhost' IDENTIFIED BY 'test-pwd';
mysql> STATUS;
mysql> SHOW VARIABLES LIKE '%char%';
mysql> SHOW VARIABLES LIKE '%collation%';
# 除 character_set_filesystem=binary 外,全部應為 utf8 / utf8_general_ci
# 測試插入/查詢中文
mysql> USE testdb;
mysql> CREATE TABLE t (c VARCHAR(50)) ENGINE=InnoDB;
mysql> INSERT INTO t VALUES ('中文測試😀');
mysql> SELECT * FROM t;
# 正常顯示即成功
| 現象 | 原因 | 修正 |
|---|---|---|
| 插入中文變 ??? | 表/庫字符集非 UTF-8 | DROP DATABASE 重建,指定 DEFAULT CHARSET utf8 |
| JDBC 讀出亂碼 | 連接 URL 缺 characterEncoding | jdbc:mysql://...?useUnicode=true&characterEncoding=utf8 |
| JSP 頁面亂碼 | pageEncoding 未設置 | <%@ page pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %> |
| Hibernate 映射異常 | hibernate.cfg.xml 缺連接參數 |
./bin/mysqladmin -u root -p shutdown
/etc/my.cnf **所有字符集參數統一 utf8**(現代建議 utf8mb4)。STATUS、SHOW VARIABLES LIKE '%char%' 納入部署清單。遵循此標準化流程,可在任何 Linux 發行版上實現 MySQL 中文零亂碼部署。