首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Linux 系統下 MySQL RPM 安裝、數據備份與 Root 密碼恢復實戰

     編輯:MySQL 綜合教學

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

二、三種啟動方式

狀態檢查: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 — 索引文件

操作步驟:

  1. 備份原文件:cp user.frm user.MYD user.MYI /backup/
  2. 停止 MySQL:service mysqld stop
  3. 從已知密碼實例複製三個文件覆蓋
  4. 啟動 MySQL:service mysqld start
  5. 用已知密碼登錄,立即修改為新密碼

風險:版本不匹配導致表結構不兼容、丟失其他用戶權限。

方案二:跳過權限表啟動(標準官方方案,推薦)

  1. 停止服務:service mysqld stop
  2. 以跳過授權表模式啟動:
    safe_mysqld --skip-grant-tables --skip-networking &
    

    --skip-networking 防止外部連入竊取數據

  3. 無密碼登錄:mysql -u root(直接進入)
  4. 重置密碼:
    USE mysql;
    UPDATE user SET Password=PASSWORD('newpass') WHERE User='root';
    FLUSH PRIVILEGES;
    
  5. 退出,正常重啟:service mysqld restart
  6. 新密碼登錄驗證

六、生產環境備份策略建議

  • 每日全量 + 每小時增量(Binlog)
  • 備份文件異地存儲(對象存儲/異地服務器)
  • 定期演練還原,驗證 RPO/RTO
  • 使用 Percona XtraBackup 實現 InnoDB 熱備份(不鎖表、物理級、速度快)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
方式命令適用場景
systemd/serviceservice mysqld start / systemctl start mysqld標準生產環境,開機自啟 chkconfig mysqld on
腳本直啟/etc/init.d/mysqld start調試、非 systemd 系統
安全模式safe_mysqld &帶參數啟動(如 --skip-grant-tables)、前台調試