萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

Linux 伺服器安裝 MySQL 完整教學:編譯參數、啟停腳本、權限設定與效能調校

在 Linux 伺服器上從原始碼編譯安裝 MySQL,能最大化發揮硬體效能並精確控制功能模組。本文涵蓋取得原始碼、編譯前置檢查、關鍵 configure 參數、系統服務整合、root 建立專用用戶、啟停操作與基礎效能參數調校,適合 FreeBSD/Linux 環境的 DBA 與運維人員參考。

取得最新原始碼

雖然套件管理器(apt、yum、ports)提供預編譯版本,但版本往往滯後。建議從 MySQL 官網 下載最新 GA 版原始碼 tarball(mysql-VERSION.tar.gz),確保獲得最新安全修補與效能改善。

編譯前置檢查

項目最低版本檢查指令
GCC2.81+gcc --version
GNU Make3.75+gmake --version 或 make --version
記憶體建議 512MB+free -m

若記憶體有限,configure 時加入 --with-low-memory 降低編譯記憶體佔用。

關鍵 Configure 參數

./configure \
  --prefix=/usr/local/mysql \
  --with-charset=utf8mb4 \
  --with-collation=utf8mb4_general_ci \
  --with-extra-charsets=all \
  --enable-thread-safe-client \
  --with-named-thread-libs=-lc_r \   # FreeBSD 3.0+ 必須,使用原生執行緒庫
  --with-big-tables \
  --with-readline \
  --with-ssl \
  --with-zlib-dir=bundled \
  --enable-local-infile \
  --enable-assembler \
  --enable-profiling

常用目錄參數:

  • --prefix:安裝根目錄(預設 /usr/local/mysql)
  • --datadir:資料目錄(建議獨立磁碟分區)
  • --sysconfdir:設定檔目錄(如 /etc)

編譯安裝流程

gmake clean            # 清除舊編譯產物
gmake                  # 編譯(視 CPU 核心數可加 -j4 加速)
gmake install          # 安裝
# 初始化系統資料庫(僅首次安裝)
/usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql

重新 configure 前請執行 rm config.cache && gmake clean 避免舊快取干擾。

建立專用 mysql 用戶與權限

groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /data/mysql   # 資料目錄

啟動與停止腳本

手動啟停

# 啟動(背景執行)
/usr/local/mysql/bin/mysqld_safe --user=mysql &

# 或使用 service 腳本(需先複製)
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
service mysqld start
service mysqld stop
service mysqld restart

設定開機自啟

# SysVinit (CentOS 6 / Ubuntu 14)
chkconfig --add mysqld
chkconfig mysqld on

# systemd (CentOS 7+ / Ubuntu 16+)
cp /usr/local/mysql/support-files/mysql.server /etc/systemd/system/mysqld.service
systemctl daemon-reload
systemctl enable mysqld
systemctl start mysqld

密碼設定與安全強化

# 設定 root 密碼
/usr/local/mysql/bin/mysqladmin -u root password 'StrongPass123!'
# 或執行安全腳本(移除匿名用戶、禁止遠端 root、移除 test db)
/usr/local/mysql/bin/mysql_secure_installation

基礎效能參數調校 (my.cnf)

[mysqld]
# 基礎路徑
basedir = /usr/local/mysql
datadir = /data/mysql
socket  = /tmp/mysql.sock
port    = 3306

# 連線設定
max_connections = 1000
back_log = 500
wait_timeout = 7200
interactive_timeout = 7200

# 緩衝區與快取 (假設 8GB 記憶體,InnoDB 專用)
innodb_buffer_pool_size = 6G
innodb_log_file_size = 512M
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 2
innodb_file_per_table = 1

key_buffer_size = 64M          # MyISAM 索引快取
sort_buffer_size = 4M
read_buffer_size = 2M
join_buffer_size = 4M
thread_cache_size = 100
table_open_cache = 2048

# 字元集
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

# 慢查詢日誌
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1

# 二進制日誌(主從同步必備)
log_bin = /data/mysql/binlog/mysql-bin
binlog_format = ROW
expire_logs_days = 7
server_id = 1

驗證安裝

# 檢查進程
ps -ef | grep mysqld

# 連線測試
/usr/local/mysql/bin/mysql -u root -p -e "SELECT VERSION(); SHOW VARIABLES LIKE 'char%';"

# 壓力測試(簡易)
mysqlslap --concurrency=50 --iterations=10 --number-int-cols=5 --number-char-cols=5 --auto-generate-sql

常見問題排查

  • 編譯失敗:檢查 GCC/Make 版本、安裝 libncurses5-dev、openssl-devel 等開發套件
  • 啟動報錯 "Can't create test file":資料目錄權限錯誤,確認 chown -R mysql:mysql /data/mysql
  • 連線被拒:檢查 bind-address、防火牆 3306 埠、skip-networking 是否關閉
  • 中文亂碼:確認資料庫、表、連線字元集皆為 utf8mb4

掌握原始碼安裝細節,不只能自訂功能模組,更能在效能調校時從根源掌控 MySQL 行為。建議將上述 my.cnf 範本納入基礎設施即代碼管理,實現環境一致性部署。

copyright © 萬盛學電腦網 all rights reserved