在 Linux/Unix 系統部署 MySQL,主流有兩條路徑:二進制 RPM 包(快速、標準化) 與 源碼編譯/通用二進制包(靈活、可控)。本文提供雙軌完整操作手冊,涵蓋安裝、初始化、安全加固、服務管理。
核心包(以 8.0 為例):
mysql-community-server-8.0.xx:服務端mysql-community-client-8.0.xx:客戶端工具mysql-community-libs-8.0.xx:共享庫mysql-community-common-8.0.xx:公共文件# 安裝服務端(自動拉取依賴)
rpm -ivh mysql-community-server-8.0.xx.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.xx.el7.x86_64.rpm
# 或一次性安裝所有下載的 rpm
rpm -ivh mysql-community-*.rpm
systemctl start mysqld
systemctl enable mysqld
# 8.0+ 生成隨機臨時密碼於錯誤日志
grep 'temporary password' /var/log/mysqld.log
# 登入修改
mysql -uroot -p'TempPass!'
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass!';
# 或運行安全腳本
mysql_secure_installation
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
# 下載 Linux Generic (x86_64) Compressed TAR Archive
tar -xzf mysql-8.0.xx-linux-glibc2.12-x86_64.tar.xz -C /usr/local
ln -s /usr/local/mysql-8.0.xx /usr/local/mysql
# 創建用戶與目錄
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
mkdir -p /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql
# 初始化數據目錄(8.0+)
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql \
--basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
# 配置 my.cnf
cat > /etc/my.cnf <
# 依賴安裝
yum install -y cmake gcc gcc-c++ ncurses-devel bison openssl-devel libaio-devel
# 構建
cd mysql-8.0.xx
mkdir build && cd build
cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_BOOST=../boost \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNODB_MEMCACHED=ON \
-DWITH_DEBUG=OFF
make -j$(nproc)
make install
# 後續初始化、配置、啟動同二進制包
| 項目 | RPM/系統包 | 二進制包/源碼 |
|---|---|---|
| 安裝路徑 | /usr/bin, /var/lib/mysql, /etc/my.cnf | /usr/local/mysql (自定義) |
| 服務管理 | systemd (mysqld.service) | SysV init (/etc/init.d/mysqld) 或 systemd 自建 |
| 用戶/組 | 自動創建 mysql:mysql | 手動創建 |
| 升級方式 | yum/dnf update / rpm -Uvh | 重新編譯/替換目錄 + 升級腳本 |
| 適用場景 | 標準化運維、批量部署 | 版本自定義、非標準路徑、舊系統 |
mysql_secure_installation(設置 root 密碼、移除匿名用戶、禁止 root 遠程、刪除 test 庫)bind-address 限制監聽接口mysql_ssl_rsa_setup 生成證書max_connections、innodb_buffer_pool_size 等核心參數mysqldump / xtrabackup + 定時任務 + 異地存儲yum install libaio / apt install libaio1netstat -tlnp | grep 3306 → 修改 port 或停止佔用進程setsebool -P mysql_connect_any=1 或調整上下文datadir 擁有者為 mysql 用戶RPM 包適合追求標準化、自動化運維的企業環境;二進制包/源碼編譯適合需要版本控制、路徑自定義、舊系統適配的場景。無論哪條軌道,初始化數據目錄、設置強密碼、配置服務管理、安全加固 四步缺一不可。建議建立標準化安裝腳本/Ansible Playbook,實現基礎設施即代碼。