源碼編譯安裝可針對硬體優化、自定義組件與字符集。本文記錄在 SUSE Linux Enterprise Server 10 SP3 (x86_64) 上編譯安裝 MySQL 5.6.17 全過程。
# OS
cat /etc/issue
# SUSE Linux Enterprise Server 10 SP3 (x86_64)
# 下載源碼包(Generic Linux, Architecture Independent)
wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.17.tar.gz
# 官方源碼安裝文檔:https://dev.mysql.com/doc/refman/5.6/en/installing-source-distribution.html
源碼建構需:CMake、GNU Make 3.75+、GCC 4.2.1+、Perl(跑測試)。
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
groupadd mysql
useradd -r -g mysql mysql
cd /usr/local/src
tar -xzf mysql-5.6.17.tar.gz
cd mysql-5.6.17
# 首次 cmake 可能報缺少 curses 庫
cmake .
# CMake Error: Curses library not found. Please install ncurses-devel.
# 下載對應版本 RPM
rpm -Uvh ncurses-devel-5.5-18.11.x86_64.rpm
# 刪除快取重新配置
rm -f CMakeCache.txt
cmake .
# -- Configuring done
# -- Generating done
# -- Build files have been written to: /usr/local/src/mysql-5.6.17
make
# [100%] Built target mysqltest_embedded ...
make install
# 預設安裝至 /usr/local/mysql
cd /usr/local/mysql
# 修改擁有者
chown -R mysql .
chgrp -R mysql .
# 初始化數據目錄
scripts/mysql_install_db --user=mysql
# 輸出提示:設定 root 密碼、複製 mysql.server 到 /etc/init.d、複製 my-default.cnf 到 /etc/my.cnf
chown -R root .
chown -R mysql data
# 配置開機自啟
cp support-files/mysql.server /etc/init.d/mysql.server
cp support-files/my-default.cnf /etc/my.cnf
# 啟動服務
bin/mysqld_safe --user=mysql &
# 建立常用命令軟連結
ln -fs /usr/local/mysql/bin/mysql /usr/local/bin/
ln -fs /usr/local/mysql/bin/mysqladmin /usr/local/bin/
ln -fs /usr/local/mysql/bin/mysqld_safe /usr/local/bin/
# 測試登入
mysql -uroot
# Welcome to the MySQL monitor ... Server version: 5.6.17 Source distribution
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/data/mysql \
-DMYSQL_USER=mysql
CMakeCache.txt 變更參數後必須刪除重建make -jN 平行編譯mysql_secure_installation 強化安全