雖然現代 Linux 發行版提供成熟的二進制套件(RPM/DEB)與容器化部署,但掌握 MySQL 源碼編譯安裝仍具核心價值:
✅ 理解安裝路徑、用戶權限、啟動腳本、配置文件的底層關係
✅ 滿足特定優化需求(如 -DWITH_INNODB_MEMCACHED=ON、自定義編譯參數)
✅ 在無套件管理器的最小化系統、嵌入式設備、國產化信創環境中落地
su - root # 切換 root
cd /tmp/download/ # 進入工作目錄
gunzip -c MySQL-3.22.xx.tar.gz | tar xvf - # 解壓(注意尾部連字符)
cd MySQL-3.22.xx # 進入源碼目錄
./configure --prefix=/usr/local/MySQL \
--with-charset=utf8mb4 \
--with-collation=utf8mb4_general_ci \
--enable-thread-safe-client \
--with-plugins=innodb,myisam,partition \
--with-mysqld-user=mysql
關鍵參數說明:
--prefix:安裝根目錄,所有二進制、庫、配置、數據均在此下--with-charset/collation:預設字符集與校對規則,建議 utf8mb4--with-mysqld-user:指定運行 mysqld 的系統用戶,安全最佳實踐./configure --help 查看
make -j$(nproc) # 多核並行編譯,大幅縮短時間
make install # 部署至 --prefix 指定目錄
# 建立專用用戶/組(若 configure 未自動建立)
groupadd -r mysql
useradd -r -g mysql -s /sbin/nologin -d /usr/local/MySQL mysql
# 初始化系統表(MySQL 5.7+ 使用 mysqld --initialize-insecure)
/usr/local/MySQL/scripts/MySQL_install_db --user=mysql
# 修正目錄擁有權
chown -R mysql:mysql /usr/local/MySQL
chown -R mysql:mysql /usr/local/MySQL/var # 數據目錄
chmod 750 /usr/local/MySQL/var # 僅擁有者/組可訪問
# 啟動服務(舊版 safe_MySQLd,新版 mysqld_safe 或 systemd)
/usr/local/MySQL/bin/safe_MySQLd --user=mysql &
# 設置 root 密碼
/usr/local/MySQL/bin/MySQLadmin -u root password 'StrongP@ssw0rd'
# 驗證連線
/usr/local/MySQL/bin/MySQL -u root -p
mysql> CREATE DATABASE test2 CHARACTER SET utf8mb4;
mysql> USE test2;
mysql> CREATE TABLE books (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
mysql> INSERT INTO books (name) VALUES ('PHP 4 Newbies'), ('Red Hat Linux 6 Server');
mysql> SELECT * FROM books;
mysql> DELETE FROM books WHERE id = 1;
mysql> SELECT * FROM books;
support-files/my.cnf 複製至 /etc/my.cnf,調整 innodb_buffer_pool_size、max_connections、log_error 等核心參數。/usr/lib/systemd/system/mysqld.service),實現開機自啟、進程監護、優雅關機。mysql_secure_installation,禁用 root 遠程、移除匿名用戶、刪除 test 庫、載入密碼驗證插件。mysqldump/xtrabackup 定時備份,驗證恢復演練。| 現象 | 原因 | 對策 |
|---|---|---|
| configure 報錯缺少 openssl/boost | 開發庫未裝 | yum install openssl-devel boost-devel 或 apt install libssl-dev libboost-all-dev |
| make 過程 OOM 被殺 | 內存不足 | 增加 swap、使用 --with-low-memory、減少並行數 make -j2 |
| 啟動報 "Can't create test file" | 數據目錄權限錯誤 | 確認 chown -R mysql:mysql /datadir 且 SELinux/AppArmor 放行 |
| 中文亂碼 | 字符集不一致 | 全鏈路 utf8mb4:my.cnf、建庫建表、連接字符串、頁面 meta |
從 tar.gz 到可用的 MySQL 服務,每一步都映射著 Linux 系統管理的核心知識體系:權限模型、服務管理、編譯鏈路、存儲引擎架構。熟練掌握源碼安裝,不僅是為了應對特殊環境,更是通往「資料庫內核原理」大門的敲門磚。