首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 源碼編譯安裝與配置實戰 (RedHat/CentOS 環境)

     編輯:MySQL 資料庫相關知識

源碼編譯安裝 MySQL 可精確控制安裝路徑、編譯參數、字符集、大文件支援等,適合生產環境定制化部署。本文以 MySQL 5.0.33 在 RedHat AS4 上編譯為例,涵蓋依賴檢查、編譯參數解析、初始化、啟動腳本、服務註冊、安全加固、常用 SQL 與備份策略。

1. 環境準備

# 檢查編譯工具鏈
rpm -qa | grep gcc
# gcc, libgcc, gcc-c++, make 等必須齊全

# 移除系統自帶舊版 MySQL
rpm -qa | grep -i mysql
rpm -e mysql-4.1.12 ...  # 依賴關係可能需 --nodeps

2. 下載與解壓

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

3. 建立專用用戶與目錄

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 目錄

4. 預編譯配置 (關鍵參數解析)

./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:額外編入字符集,減少運行時載入開銷

5. 編譯安裝

make
make install

6. 初始化系統表

./scripts/mysql_install_db --datadir=/opt/mysql-5.0.33/data

生成 mysql、test 兩個系統庫。

7. 啟動/停止與驗證

# 啟動 (後台)
./bin/mysqld_safe --no-defaults &

# 停止
./bin/mysqladmin -u root shutdown

# 連接測試
./bin/mysql -u root
# 進入後執行
SHOW DATABASES;

8. 開機自啟兩種方式

方式一:rc.local 簡單粗暴

echo "su - mysql -c '/opt/mysql-5.0.33/bin/mysqld_safe --no-defaults &'" >> /etc/rc.d/rc.local

方式二:System V init 腳本 (標準服務管理)

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。

9. 安全加固清單

  1. 修改 root 密碼:mysqladmin -u root password 'strong_pwd'
  2. 刪除匿名用戶:DELETE FROM mysql.user WHERE User='';
  3. 禁止 root 遠程登入:DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost','127.0.0.1','::1');
  4. 刪除 test 庫:DROP DATABASE test;
  5. 限制數據目錄權限:chown -R mysql:mysql /opt/mysql-5.0.33/data; chmod -R go-rwx /opt/mysql-5.0.33/data
  6. 配置 skip-networking 或防火牆僅開放應用服務器 IP。
  7. 清理歷史記錄:rm -f ~/.bash_history ~/.mysql_history; ln -s /dev/null ~/.bash_history; ln -s /dev/null ~/.mysql_history

10. 記憶體配置模板選擇

源碼包 support-files/ 下提供預設 my-*.cnf:

模板適用記憶體
my-small.cnf< 64MB
my-medium.cnf32MB~64MB
my-large.cnf512MB
my-huge.cnf1GB~2GB
my-innodb-heavy-4G.cnf4GB+
cp support-files/my-large.cnf /etc/my.cnf
# 根據實際記憶體調整 innodb_buffer_pool_size 等核心參數

11. 常用管理命令速查

# 導出邏輯備份
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
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved