在企業級Linux環境部署MySQL時,原始碼編譯安裝可實現自訂安裝路徑、優化編譯參數、啟用特定功能模組。本文記錄在SUSE SLES 11上編譯安裝MySQL 5.1.45的完整過程,包含依賴解決、配置優化、安全初始化等關鍵步驟。
/work/soft/database/MySQL/MySQL5.1/work/soft/database/MySQL/MySQLdata嘗試使用官方RPM包安裝:
rpm -ivh MySQL-server-community-5.1.45-1.sles11.i586.rpm
雖安裝成功且服務自動啟動(3306端口監聽),但RPM預設安裝路徑不可變更:
rpm -ivh --prefix=/work/soft/database/MySQL/ MySQL-server-*.rpm
# 錯誤:package MySQL-server-community is not relocatable
無法滿足自訂路徑需求,故改為原始碼編譯。
配置過程報錯No curses/termcap library found,需先安裝ncurses:
gunzip ncurses-5.7.tar.gz
tar xvf ncurses-5.7.tar
cd ncurses-5.7
./configure && make && make install
./configure \
--prefix=/work/soft/database/MySQL/MySQL5.1 \
--localstatedir=/work/soft/database/MySQL/MySQLdata \
--with-charset=utf8 \
--with-extra-charsets=all \
--with-client-ldflags=-all-static \
--with-mysqld-ldflags=-all-static \
--with-unix-socket-path=/work/soft/database/MySQL/tmp/mysql.sock
make && make install
關鍵參數說明:--with-charset=utf8設定預設字符集,--with-extra-charsets=all啟用所有字符集支援,靜態連結參數提升執行效能。
scripts/mysql_install_db
輸出確認系統表建立完成,並提示設定root密碼與安全配置。
cp support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on
編輯/etc/profile:
export PATH=$JAVA_HOME/bin:$SOFT_ROOT/database/MySQL/MySQL5.1/bin:$PATH
alias mysql_start="mysqld_safe &"
alias mysql_stop="mysqladmin -uroot -p shutdown"
編譯安裝後系統自動建立mysql用戶/群組,進程以mysql身份運行,符合最小權限原則。
mysqladmin -u root password 'yourpassword'
mysql -uroot -p
mysql> USE mysql;
mysql> DELETE FROM user WHERE password = '';
mysql> UPDATE user SET host = '%' WHERE user = 'root';
mysql> FLUSH PRIVILEGES;
安全建議:生產環境root應禁止遠程登入(host='localhost'),另建專用管理帳號開放遠程存取。
確認3306端口僅對受信任IP開放,必要時配置SSL加密連接。
透過原始碼編譯安裝,獲得了完全可控的部署環境,為後續效能調優與安全強化奠定基礎。