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

UNIX/Linux 系統下 MySQL 源碼編譯安裝與安全初始化完整指南

     編輯:MySQL 資料庫相關知識

本文詳細記錄在 UNIX/Linux 環境下從源碼包編譯安裝 MySQL 3.22.25 的全過程,涵蓋依賴準備、配置參數優化、數據目錄初始化、服務啟動、Root 密碼設置等關鍵步驟,並針對首次部署的安全風險給出修補建議。

一、環境準備與源碼獲取

# 切換至源碼工作目錄
cd /usr/src

# 下載源碼包(示例版本 3.22.25,實際請用官網最新穩定版)
wget https://downloads.mysql.com/archives/get/file/mysql-3.22.25.tar.gz

# 解壓
tar -zvxf mysql-3.22.25-pc-linux-gnu-i686.tar.gz
cd mysql-3.22.25-pc-linux-gnu-i686

二、配置編譯參數

# 指定安裝前綴,後續路徑引用均以此為基準
./configure --prefix=/usr/local/mysql
關鍵提示: --prefix 路徑將決定後續 basedir、bindir、libexecdir 等所有衍生路徑,請確保磁盤空間充足且路徑無特殊字符。

三、編譯與安裝

make
make install

編譯耗時視 CPU 核心數而定,現代服務器通常 5-15 分鐘完成。若報錯缺少 ncurses、bison、gcc-c++ 請先安裝對應開發包。

四、初始化系統數據庫

# 創建 mysql 用戶組與用戶(若不存在)
groupadd mysql
useradd -r -g mysql -s /bin/false mysql

# 運行初始化腳本
scripts/mysql_install_db --user=mysql

此步驟將在 /usr/local/mysql/var/ 下創建兩個核心系統庫:

  • mysql:權限管理庫(user、db、tables_priv 等授權表)。
  • test:測試庫,供開發驗證使用。
重要: 若系統曾安裝過 MySQL,var 目錄可能已存在舊數據,mysql_install_db 會跳過初始化並報警。請備份遷移舊數據後刪除 var 重新初始化。

五、啟動 MySQL 服務

# 進入二進制目錄
cd /usr/local/mysql/bin

# 後台安全啟動
./mysqld_safe --user=mysql &

設置開機自啟

將啟動命令加入 /etc/rc.d/rc.local(SysVinit)或創建 systemd 服務單元(現代發行版推薦):

[Unit]
Description=MySQL Community Server
After=network.target

[Service]
Type=forking
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/my.cnf
TimeoutSec=600
Restart=on-failure

[Install]
WantedBy=multi-user.target

保存為 /etc/systemd/system/mysqld.service,執行 systemctl daemon-reload && systemctl enable mysqld。

六、安全初始化:務必修改 Root 空密碼

全新安裝的 root@localhost 默認無密碼,任何本地用戶均可無憑證登入並完全控制資料庫,風險極高!

驗證風險

$ /usr/local/mysql/bin/mysql -u root
Welcome to the MySQL monitor...  # 直接進入,無需密碼!

設置強密碼

# 方法一:mysqladmin(推薦腳本化)
/usr/local/mysql/bin/mysqladmin -u root password 'NewStrongPass123!'

# 方法二:SQL 交互式
/usr/local/mysql/bin/mysql -u root
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;

驗證生效

$ /usr/local/mysql/bin/mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

$ /usr/local/mysql/bin/mysql -u root -p
Enter password: ************
Welcome to the MySQL monitor...  # 密碼正確方可進入

七、生產環境加固清單

項目命令/操作說明
刪除匿名用戶DELETE FROM mysql.user WHERE User='';防止無用戶名連接
禁止 Root 遠程登入DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost','127.0.0.1','::1');僅允許本地管理
刪除 Test 庫DROP DATABASE test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%';減少攻擊面
刷新權限FLUSH PRIVILEGES;使上述變更立即生效
配置 SSL生成憑證並設置 require_secure_transport=ON加密傳輸防竊聽
啟用審計日誌安裝 audit_log 插件合規審計、入侵溯源

八、總結

源碼編譯安裝雖較包管理器繁瑣,但能針對硬件架構深度優化(如 -march=native、靜態鏈接),並完全掌控安裝路徑與組件裁剪。核心原則:安裝即加固,首要任務是消除 Root 空密碼與匿名用戶,再考慮性能調優。現代部署建議優先使用官方 RPM/DEB 或容器化交付,將精力集中在架構設計、索引優化、高可用構建等高價值領域。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved