RedHat/CentOS Linux 下 MySQL RPM 安裝、備份還原與密碼找回完整實戰
基於 RedHat 9.0 實測(適用於 RHEL/CentOS 5/6/7 系列),覆蓋 RPM 包安裝順序、三種啟動方式、mysqldump 邏輯備份還原、兩種 Root 密碼重置方案。
一、RPM 包安裝順序與依賴
光盤/鏡像源典型包:
perl-CGI-2.81-88.i386.rpm
perl-DBI-1.32-5.i386.rpm
perl-DBD-MySQL-2.1021-3.i386.rpm
MySQL-3.23.54a-11.i386.rpm (客戶端)
MySQL-server-3.23.54a-11.i386.rpm (服務端)
MySQL-devel-3.23.54a-11.i386.rpm (開發庫,編譯驅動需用)
安裝順序(依賴先行):
rpm -ivh perl-CGI-2.81-88.i386.rpm
rpm -ivh perl-DBI-1.32-5.i386.rpm
rpm -ivh MySQL-3.23.54a-11.i386.rpm perl-DBD-MySQL-2.1021-3.i386.rpm
rpm -ivh MySQL-server-3.23.54a-11.i386.rpm
驗證安裝:rpm -qa | grep -i mysql
二、三種啟動方式
| 方式 | 命令 | 適用場景 |
| systemd/service | service mysqld start / systemctl start mysqld | 標準生產環境,開機自啟 chkconfig mysqld on |
| 腳本直啟 | /etc/init.d/mysqld start | 調試、非 systemd 系統 |
| 安全模式 | safe_mysqld & | 帶參數啟動(如 --skip-grant-tables)、前台調試 |
狀態檢查:service mysqld status 返回 pid 3295 表示運行中。
三、初始化與密碼設置
# 首次登錄(默認 root 無密碼)
mysql -u root -p
# 直接回車進入
# 修改 root 密碼
mysqladmin -u root -p password 'newpass'
# 提示輸入舊密碼(首次為空),回車即可
常用操作:SHOW DATABASES; 見默認 mysql、test 庫。
四、邏輯備份與還原
mysqldump 備份
# 備份單庫
mysqldump -u root -p mysql > /backup/mysql_$(date +%F).sql
# 備份全庫(含存儲過程、觸發器、事件)
mysqldump -u root -p --single-transaction --routines --triggers --events --all-databases > /backup/full_$(date +%F).sql
# 壓縮備份
mysqldump -u root -p db_name | gzip > /backup/db_name_$(date +%F).sql.gz
還原測試
# 創建目標庫
mysql -u root -p -e "CREATE DATABASE bak CHARACTER SET utf8;"
# 還原單庫
mysql -u root -p bak < /backup/mysql_2024-01-15.sql
# 還原壓縮備份
gunzip -c /backup/db_name_2024-01-15.sql.gz | mysql -u root -p bak
五、Root 密碼找回兩大方案
方案一:替換 user 表文件(需已知密碼的同版本實例)
MySQL 權限存儲於 mysql.user 表,文件位於 /var/lib/mysql/mysql/:
user.frm — 表結構定義
user.MYD — 數據文件
user.MYI — 索引文件
操作步驟:
- 備份原文件:
cp user.frm user.MYD user.MYI /backup/
- 停止 MySQL:
service mysqld stop
- 從已知密碼實例複製三個文件覆蓋
- 啟動 MySQL:
service mysqld start
- 用已知密碼登錄,立即修改為新密碼
風險:版本不匹配導致表結構不兼容、丟失其他用戶權限。
方案二:跳過權限表啟動(標準官方方案,推薦)
- 停止服務:
service mysqld stop
- 以跳過授權表模式啟動:
safe_mysqld --skip-grant-tables --skip-networking &
--skip-networking 防止外部連入竊取數據
- 無密碼登錄:
mysql -u root(直接進入)
- 重置密碼:
USE mysql;
UPDATE user SET Password=PASSWORD('newpass') WHERE User='root';
FLUSH PRIVILEGES;
- 退出,正常重啟:
service mysqld restart
- 新密碼登錄驗證
六、生產環境備份策略建議
- 每日全量 + 每小時增量(Binlog)
- 備份文件異地存儲(對象存儲/異地服務器)
- 定期演練還原,驗證 RPO/RTO
- 使用
Percona XtraBackup 實現 InnoDB 熱備份(不鎖表、物理級、速度快)
- 上一篇文章: MySQL 雙機熱備(主從複製)生產級配置與故障處理全流程
- 下一篇文章: Linux 下使用 PuTTY 進行 MySQL 數據庫遠程備份與還原操作指南
Copyright ©
程式碼之家 All Rights Reserved