相較 RPM 安裝,原始碼編譯可自訂安裝路徑、啟用/停用功能模組、優化編譯參數。本文以 MySQL 3.22 為例,記錄完整的 tar.gz 二進位套件與原始碼編譯安裝流程。
cd /usr/local
tar -zxvf /tmp/mysql-3.22.21-pc-linux-gnu-i686.tar.gz
ln -s mysql-3.22.21-pc-linux-gnu-i686 mysql
建立符號連結方便日後升級切換版本。
groupadd mysql
useradd -g mysql -s /bin/false -M mysql
-s /bin/false 禁止登入,-M 不建立家目錄,符合最小權限原則。
cd /usr/local
chown -R mysql:root mysql-3.22.21-pc-linux-gnu-i686 mysql
su - mysql
cd mysql
scripts/mysql_install_db
exit
必須以 mysql 身分執行初始化,建立 mysql 系統資料庫與授權表。
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysql
chmod +x /etc/rc.d/init.d/mysql
/sbin/chkconfig --add mysql
/sbin/chkconfig --level 345 mysql on
cd /tmp
tar -zxvf mysql-4.0.14.tar.gz -C /setup
cd /setup/mysql-4.0.14
./configure --prefix=/web/mysql \
--without-debug \
--with-extra-charsets=gb2312 \
--enable-assembler \
--without-isam \
--without-innodb \
--with-pthread \
--enable-thread-safe-client \
--with-client-ldflags=-all-static \
--with-mysqld-ldflags=-all-static \
--with-raid
make && make install
關鍵參數說明:
--without-innodb:不需事務功能可減小體積--enable-assembler:啟用組合語言優化字串函數-all-static:靜態連結,部署單一執行檔無相依--with-extra-charsets=gb2312:內建中文編碼支援scripts/mysql_install_db
cp support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod 700 /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
# 驗證
netstat -an | grep 3306
mysqladmin -u root password 'new_strong_password'
mysql -u root -p
mysql> USE mysql;
mysql> DELETE FROM user WHERE Password = '';
mysql> FLUSH PRIVILEGES;
原始碼編譯雖步驟較多,但能針對硬體優化、精簡模組、靜態連結部署。生產環境建議:固定編譯參數腳本化、建立專屬 RPM/DEB 套件、納入配置管理,確保可重現部署。