首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SUSE Linux 源碼編譯安裝 MySQL 5.6 完整實錄

     編輯:MySQL 資料庫相關知識

環境準備

項目版本/規格
OSSUSE Linux Enterprise Server 10 SP3 (x86_64)
Kernel2.6.16.60-0.54.5-smp
MySQL5.6.17 (Generic Linux Source: mysql-5.6.17.tar.gz)
CMake2.6.4+ (源碼編譯)
GCC4.3+ (SLES10 自帶)

依賴包安裝

# 1. CMake (源碼編譯,系統無 rpm)
cd /usr/local/src
wget https://www.cmake.org/files/v2.6/cmake-2.6.4.tar.gz
tar -xzf cmake-2.6.4.tar.gz && cd cmake-2.6.4
./bootstrap && make && make install

# 2. ncurses-devel (CMake 配置階段必需)
# SLES10 掛載 ISO 或下載 rpm
rpm -Uvh ncurses-devel-5.5-18.11.x86_64.rpm

# 3. 其他開發工具
zypper install -y gcc gcc-c++ make perl libaio-devel

MySQL 編譯安裝流程

# 1. 創建用戶組/用戶
groupadd mysql
useradd -r -g mysql -s /bin/false mysql

# 2. 解壓源碼
cd /usr/local/src
tar -xzf mysql-5.6.17.tar.gz
cd mysql-5.6.17

# 3. CMake 配置 (關鍵參數)
cmake . \
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    -DMYSQL_DATADIR=/data/mysql \
    -DSYSCONFDIR=/etc \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DWITH_PARTITION_STORAGE_ENGINE=1 \
    -DWITH_FEDERATED_STORAGE_ENGINE=1 \
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
    -DWITH_MYISAM_STORAGE_ENGINE=1 \
    -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
    -DWITH_READLINE=1 \
    -DENABLED_LOCAL_INFILE=1 \
    -DDEFAULT_CHARSET=utf8mb4 \
    -DDEFAULT_COLLATION=utf8mb4_unicode_ci \
    -DWITH_EXTRA_CHARSETS=all \
    -DWITH_SSL=system \
    -DWITH_ZLIB=system

# 常見 CMake 錯誤處理
# Curses library not found → 安裝 ncurses-devel 後刪除 CMakeCache.txt 重跑
rm -f CMakeCache.txt && cmake . ...

編譯與安裝

# 4. 編譯 (多核並行加速)
make -j$(nproc)

# 5. 安裝
make install

# 6. 後續配置
cd /usr/local/mysql
chown -R mysql:mysql .
chown -R root .
chown -R mysql data

# 7. 初始化數據目錄 (5.6 使用 mysql_install_db)
scripts/mysql_install_db --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql

# 8. 配置文件
cp support-files/my-default.cnf /etc/my.cnf
# 編輯 /etc/my.cnf 關鍵項:
# [mysqld]
# datadir=/data/mysql
# socket=/tmp/mysql.sock
# port=3306
# server_id=1
# log_bin=mysql-bin
# innodb_buffer_pool_size=1G
# innodb_log_file_size=256M

# 9. 啟動腳本
cp support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
chkconfig mysql on

# 10. 環境變量
echo 'export PATH=$PATH:/usr/local/mysql/bin' > /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh

# 11. 啟動服務
service mysql start
# 或
/usr/local/mysql/bin/mysqld_safe --user=mysql &

驗證與安全加固

# 1. 連接測試
mysql -uroot -p
# 初始無密碼,直接回車

# 2. 修改 root 密碼
mysqladmin -uroot password 'StrongPass#2024'

# 3. 安全初始化腳本 (推薦執行)
/usr/local/mysql/bin/mysql_secure_installation
# 會提示:移除匿名用戶、禁止 root 遠程登入、移除 test 庫、重載權限

# 4. 驗證版本與存儲引擎
mysql -uroot -p -e "SELECT VERSION(); SHOW ENGINES; SHOW VARIABLES LIKE 'character_set_%';"

常見編譯問題對照表

錯誤現象原因解決
cmake: command not found未安裝 CMake源碼編譯安裝 CMake 2.6+
Curses library not found缺 ncurses-develrpm -Uvh ncurses-devel; rm CMakeCache.txt; 重跑 cmake
g++: command not found缺 gcc-c++zypper install gcc-c++
ld: cannot find -laio缺 libaio-develzypper install libaio-devel
innodb_log_file_size mismatchmy.cnf 與現有 ib_logfile 不符停庫、刪除 ib_logfile0/1、修正配置、重啟
Can't create test filedatadir 權限/路徑錯誤chown -R mysql:mysql /data/mysql; 確認 my.cnf datadir

源碼編譯優勢總結

  1. 硬件優化:`-march=native` 開啟 CPU 所有指令集 (SSE4.2/AVX 等)
  2. 精簡組件:僅編譯所需存儲引擎,二進制體積減 30%+
  3. 字符集預設:編譯期固化 utf8mb4,避免運行時配置疏漏
  4. 調試支持:`-DWITH_DEBUG=1` 產出帶調試符號的二進制,便於核心問題定位
  5. 版本鎖定:離線環境、合規要求固定版本時唯一選擇

源碼編譯雖耗時,但對核心業務庫、特殊硬件架構 (ARM/POWER)、合規環境是必備技能。建議構建內部 RPM/DEB 包實現標準化部署。

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