源碼編譯安裝 MySQL 可精確控制安裝路徑、編譯參數、字符集、大文件支援等,適合生產環境定制化部署。本文以 MySQL 5.0.33 在 RedHat AS4 上編譯為例,涵蓋依賴檢查、編譯參數解析、初始化、啟動腳本、服務註冊、安全加固、常用 SQL 與備份策略。
# 檢查編譯工具鏈
rpm -qa | grep gcc
# gcc, libgcc, gcc-c++, make 等必須齊全
# 移除系統自帶舊版 MySQL
rpm -qa | grep -i mysql
rpm -e mysql-4.1.12 ... # 依賴關係可能需 --nodeps
cd /opt
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.0.33.tar.gz
tar zxvf mysql-5.0.33.tar.gz
useradd mysql -d /opt/mysql-5.0.33 -s /sbin/nologin
chown -R mysql:mysql /opt/mysql-5.0.33
su - mysql
mkdir data tmp # 數據目錄、Socket 目錄
./configure \
--prefix=/opt/mysql-5.0.33 \
--localstatedir=/opt/mysql-5.0.33/data \
--with-unix-socket-path=/opt/mysql-5.0.33/tmp/mysql.sock \
--with-mysqld-user=mysql \
--enable-large-files \
--with-big-tables \
--with-charset=utf8 \
--with-extra-charsets=latin1,latin2,latin5,latin7,gb2312,gbk
參數說明:
--prefix:安裝根目錄--localstatedir:數據文件目錄--with-unix-socket-path:Socket 文件位置--with-mysqld-user:運行進程用戶--enable-large-files / --with-big-tables:支援 >2GB 表--with-charset:默認字符集 (5.5+ 建議 utf8mb4)--with-extra-charsets:額外編入字符集,減少運行時載入開銷make
make install
./scripts/mysql_install_db --datadir=/opt/mysql-5.0.33/data
生成 mysql、test 兩個系統庫。
# 啟動 (後台)
./bin/mysqld_safe --no-defaults &
# 停止
./bin/mysqladmin -u root shutdown
# 連接測試
./bin/mysql -u root
# 進入後執行
SHOW DATABASES;
echo "su - mysql -c '/opt/mysql-5.0.33/bin/mysqld_safe --no-defaults &'" >> /etc/rc.d/rc.local
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 3 mysqld on
support-files/mysql.server 內部調用 mysqld_safe,支援 start|stop|restart|status。
mysqladmin -u root password 'strong_pwd'DELETE FROM mysql.user WHERE User='';DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost','127.0.0.1','::1');DROP DATABASE test;chown -R mysql:mysql /opt/mysql-5.0.33/data; chmod -R go-rwx /opt/mysql-5.0.33/dataskip-networking 或防火牆僅開放應用服務器 IP。rm -f ~/.bash_history ~/.mysql_history; ln -s /dev/null ~/.bash_history; ln -s /dev/null ~/.mysql_history源碼包 support-files/ 下提供預設 my-*.cnf:
| 模板 | 適用記憶體 |
|---|---|
| my-small.cnf | < 64MB |
| my-medium.cnf | 32MB~64MB |
| my-large.cnf | 512MB |
| my-huge.cnf | 1GB~2GB |
| my-innodb-heavy-4G.cnf | 4GB+ |
cp support-files/my-large.cnf /etc/my.cnf
# 根據實際記憶體調整 innodb_buffer_pool_size 等核心參數
# 導出邏輯備份
mysqldump -u root -p --opt --single-transaction --routines --triggers db > backup.sql
# 導入
mysql -u root -p db < backup.sql
# 檢查/修復表
mysqlcheck -A -o -r -p
# 監控進程
mysqladmin -u root -p processlist