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

Linux 手動部署 MySQL 5.0 ICC 版並解決中文 UTF-8 編碼全攻略

     編輯:MySQL 綜合教學

Debian/Ubuntu 手動編譯安裝 MySQL 5.0 ICC 版與中文編碼徹底解決方案

本文基於 Debian Etch Linux 實測,採用 Intel ICC 編譯版 MySQL 5.0.27(官方宣稱性能提升 10-20%),搭配 JDBC、Resin、Spring、Hibernate 全鏈路 UTF-8 實戰驗證,提供從下載到中文零亂碼的標準化部署流程。

核心原則:全鏈路 UTF-8

  • MySQL 5.0+ 原生支持 UTF-8,但默認 latin1
  • Java 內部使用 Unicode,JSP 頁面必須聲明 UTF-8
  • JDBC 驅動使用官方 Connector/J 5.0.4
  • 應用服務器 Resin 3.1 / Spring 2.0 / Hibernate 3.2 實測通過

標準化手動安裝 15 步走

  1. 下載:mysql-standard-5.0.27-linux-i686-icc-glibc23.tar.gz(ICC 版優先)
  2. 解壓:tar zxvf mysql-standard-5.0.27-linux-i686-icc-glibc23.tar.gz -C /usr/local/
  3. 創建用戶組:
    groupadd mysql
    useradd -g mysql mysql
    
  4. 創建軟鏈接:cd /usr/local && ln -s mysql-standard-5.0.27-linux-i686-icc-glibc23 mysql
  5. 進入目錄:cd /usr/local/mysql
  6. 初始化數據目錄:./scripts/mysql_install_db --user=mysql
  7. 設置權限:
    chown -R root .
    chown -R mysql data
    chgrp -R mysql .
    
  8. 創建 /etc/my.cnf 核心配置(關鍵步驟):
    [mysqld]
    # 默認使用 InnoDB 事務引擎
    default-storage-engine=INNODB
    
    # === 全局強制 UTF-8 ===
    character-set-server=utf8
    collation-server=utf8_general_ci
    default-character-set=utf8
    
    # 禁用 BDB 引擎(節省內存)
    skip-bdb
    
  9. 啟動服務:/usr/local/mysql/bin/mysqld_safe --user=mysql &
  10. 設置 root 密碼:/usr/local/mysql/bin/mysqladmin -u root -p password 'new-password'(舊密碼為空直接回車)
  11. 登錄創建業務庫與用戶:
    mysql -u root -p
    CREATE USER 'app_user' IDENTIFIED BY 'strong-password';
    CREATE DATABASE app_db DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    GRANT ALL ON app_db.* TO 'app_user'@'localhost' IDENTIFIED BY 'strong-password';
    FLUSH PRIVILEGES;
    

    必須顯式指定庫/表 CHARSET=utf8 COLLATE=utf8_general_ci,否則繼承服務器默認 latin1 導致中文亂碼。

  12. 遠程訪問授權:MySQL 權限 = 用戶 + 客戶端主機 + 密碼。遠程連接需額外授權:
    GRANT ALL ON app_db.* TO 'app_user'@'192.168.1.%' IDENTIFIED BY 'strong-password';
    
  13. 優雅停機:/usr/local/mysql/bin/mysqladmin -u root -p shutdown

中文編碼驗證「三板斧」

登錄 MySQL 依次執行,確保全鏈路 utf8:

-- 1. 總覽
STATUS;
-- 關注 Server characterset、Db characterset、Client characterset、Conn characterset 均為 utf8

-- 2. 詳細變量檢查
SHOW VARIABLES LIKE '%char%';
-- 除 character_set_filesystem=binary 外,其餘應全為 utf8

-- 3. 排序規則檢查
SHOW VARIABLES LIKE '%collation%';
-- 應全為 utf8_general_ci

-- 4. 庫級編碼確認
mysqlshow -u root -p -i db_name
-- 若顯示 latin1_swedish_ci,必須刪庫重建(參考步驟 11)

常見坑點避雷

  • my.cnf 位置優先級:/etc/my.cnf > /usr/local/mysql/my.cnf > ~/.my.cnf,建議統一用 /etc/my.cnf
  • JDBC 連接串建議顯式指定編碼:jdbc:mysql://host:3306/db?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
  • Hibernate 配置 hibernate.connection.CharSet=utf8、hibernate.connection.characterEncoding=utf8、hibernate.connection.useUnicode=true
  • 修改配置後必須 重啟 mysqld 生效
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved