RPM/YUM 安裝最簡單、自動解決依賴、自動生成系統服務、適用於標準化部署。本文以 CentOS 7 + MySQL 5.7 為例。
# 檢查現有安裝
rpm -qa | grep -i mysql
# 查看可用版本
yum list | grep mysql
# 安裝官方 YUM 源(獲取最新版)
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
# 安裝服務端/客戶端/開發庫
yum install -y mysql-community-server mysql-community-client mysql-community-devel
# 或指定版本
yum install -y mysql-community-server-5.7.44
# 啟動/停止/重啟
systemctl start|stop|restart mysqld
# 開機自啟
systemctl enable mysqld
# 首次啟動:生成隨機 root 密碼(5.7+)
grep 'temporary password' /var/log/mysqld.log
# 登錄修改密碼
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!';
| 路徑 | 內容 | 說明 |
|---|---|---|
/etc/my.cnf | 主配置文件 | 唯一讀取配置,包含 [mysqld][client][mysql] 等段 |
/var/lib/mysql/ | 數據目錄 | 核心數據存放,需備份保護 |
/var/lib/mysql/ibdata1 | InnoDB 共享表空間 | 存儲數據字典、Undo Log、雙寫緩衝、插入緩衝 |
/var/lib/mysql/ib_logfile0/1 | Redo Log | 循環寫入,崩潰恢復關鍵,大小由 innodb_log_file_size 決定 |
/var/lib/mysql/mysql.sock | Unix Socket | 本地連接通信端點,PHP/本地客戶端默認使用 |
/var/lib/mysql/*.pid | 進程 PID 文件 | 啟動時創建,停止時刪除,防止重複啟動 |
/var/lib/mysql/db_name/ | 庫目錄 | 每庫一目錄,含 .frm/.ibd 等文件 |
/var/log/mysqld.log | 錯誤日誌 | 啟動/關閉/錯誤/警告信息,排查首選 |
/usr/share/mysql/ | 字符集/協譯/錯誤信息/樣例配置 | mysqld --help --verbose 可見默認值來源 |
/usr/bin/ | 客戶端工具 | mysql, mysqldump, mysqladmin, mysqlbinlog 等 |
/usr/lib64/mysql/ | 插件/共享庫 | 存儲引擎、認證插件、半同步複製插件等 |
db_name/
├── tbl_name.frm # 表定義(5.7 及之前,8.0 移至數據字典)
├── tbl_name.ibd # 獨立表空間:數據 + 索引(B+樹)
└── tbl_name.cfg # 可選,用於表空間導入/導出 (FLUSH TABLES ... FOR EXPORT)
/etc/my.cnf 核心參數模板[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# 字符集
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# InnoDB
innodb_buffer_pool_size=1G
innodb_log_file_size=256M
innodb_log_files_in_group=2
innodb_flush_log_at_trx_commit=2
innodb_file_per_table=1
# 連接
max_connections=1000
thread_cache_size=50
# 慢查詢
slow_query_log=1
slow_query_log_file=/var/lib/mysql/slow.log
long_query_time=1
# Binlog
log_bin=mysql-bin
binlog_format=ROW
expire_logs_days=7
# YUM 卸載
yum remove mysql-community-server mysql-community-client mysql-community-libs mysql-community-common
# 徹底清理數據(謹慎!)
rm -rf /var/lib/mysql
rm -rf /var/log/mysqld.log
rm -f /etc/my.cnf
# RPM 強制卸載(不推薦)
rpm -qa | grep mysql
rpm -ev --nodeps package_name
RPM 安裝適合標準化運維,**生產環境建議鎖定版本**(
yum versionlock),避免 yum update 導致非預期升級。大規模部署請使用 Ansible/SaltStack 統一分發配置與版本。