作者偏好從原始碼編譯以榨取最大效能。記錄 MySQL 4.0.14 在 Linux 上的編譯參數選擇、安裝流程、權限設定、啟動驗證,以及 Perl DBI/DBD::mysql 介面安裝。
./configure --prefix=/web/mysql \
--without-debug \ # 移除除錯資訊,減小體積提升速度
--with-extra-charsets=gb2312 \ # 內建 GB2312 中文支援
--enable-assembler \ # 字串函數使用組合語言優化
--without-isam \ # 移除舊 ISAM 表引擎
--without-innodb \ # 不需事務,移除 InnoDB 減少記憶體佔用
--with-pthread \ # 強制使用 POSIX 執行緒庫
--enable-thread-safe-client \ # 執行緒安全的客戶端庫
--with-client-ldflags=-all-static \
--with-mysqld-ldflags=-all-static \ # 靜態連結,部署無相依
--with-raid # 啟用 RAID 支援(大表分割)
make && make install
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
cd /web
chmod 750 mysql -R
chgrp mysql mysql -R
chown mysql mysql/var -R
# strip 二進位檔減小體積
cd /web/mysql/libexec
cp mysqld mysqld.old
strip mysqld
chkconfig --add mysqld
chkconfig --level 345 mysqld on
service mysqld start
netstat -an | grep 3306 # 確認 3306 監聽
# 建立便捷連結
ln -s /web/mysql/bin/mysql /sbin/mysql
ln -s /web/mysql/bin/mysqladmin /sbin/mysqladmin
# 設定 root 密碼並清理匿名帳號
mysqladmin -uroot password "your_password"
mysql -uroot -p -e "USE mysql; DELETE FROM user WHERE Password=''; FLUSH PRIVILEGES;"
tar zxvf DBI-1.38.tar.gz
tar zxvf DBD-mysql-2.9002.tar.gz
cd DBI-1.38
perl Makefile.PL && make && make test && make install
cd ../DBD-mysql-2.9002
perl Makefile.PL && make && make test && make install
注意:若系統 Perl 路徑為 /usr/local/bin/perl,確保 #!/usr/local/bin/perl shebang 正確。
my-medium.cnf 適合 64-128MB 記憶體機器;大記憶體請用 my-large.cnf 或 my-huge.cnf 並手動調大 key_buffer_size、table_cache、sort_buffer_sizestrip mysqld 可減少 20-30% 二進位大小,略微提升載入速度-all-static)避免 glibc 版本相依問題,適合跨機器部署編譯安裝給予最大彈性,但也要求維運者具備除錯能力。建議將上述流程封裝為 Ansible Playbook / Shell 腳本 / RPM Spec,實現基礎設施即代碼。