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

Windows 重裝系統後 MySQL 數據恢復與 Root 密碼重置全攻略

     編輯:MySQL 綜合教學

MySQL 綠色版遷移與權限修復實戰

MySQL 免安裝版本(ZIP 包)本質是綠色軟件,數據文件與程序分離。重裝 Windows 後,只需保留原 data 目錄與配置文件,即可快速恢復服務。本文詳述恢復流程及「Access denied for user 'root'」權限錯誤的徹底解決方案。

場景一:直接復用原數據目錄啟動服務

REM 假設原安裝目錄 D:\mysql-5.7 完好保留
REM 1. 創建啟動腳本 run.bat 放入 bin 目錄
mysqld.exe --defaults-file=../my.ini --console

REM 2. 以管理員身份運行 run.bat,觀察控制台無錯誤即啟動成功
REM 3. 註冊為服務(可選)
mysqld --install MySQL57 --defaults-file="D:\mysql-5.7\my.ini"
net start MySQL57

關鍵點:my.ini 中 basedir/datadir 必須指向當前絕對路徑,若盤符變更需同步修改。

場景二:連接報錯「Access denied for user 'root'@'IP'」

常見於:數據目錄遷移後權限表異常、密碼遺忘、插件不匹配(8.0 caching_sha2_password)。

Windows 環境修復步驟

REM 1. 停止服務/進程
net stop MySQL57
REM 或任務管理器結束 mysqld.exe

REM 2. 跳過權限表啟動
cd D:\mysql-5.7\bin
mysqld.exe --defaults-file=../my.ini --skip-grant-tables --console

REM 3. 新開 CMD 窗口,無密碼登入
mysql -u root

REM 4. 修改密碼並刷新權限(5.7 版本)
USE mysql;
UPDATE user SET authentication_string=PASSWORD('NewPass123!') WHERE User='root';
FLUSH PRIVILEGES;

REM 8.0+ 版本
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!';
FLUSH PRIVILEGES;

REM 5. 關閉 --skip-grant-tables 進程,正常重啟
net start MySQL57

Linux 環境修復(兩種方式)

# 方式一:安全模式(通用)
systemctl stop mysqld
mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root
# 執行上述 UPDATE/ALTER + FLUSH PRIVILEGES
systemctl restart mysqld

# 方式二:利用 Debian 維護帳號(Debian/Ubuntu 專用)
cat /etc/mysql/debian.cnf
# 獲取 [client] 節下的 user/password
mysql -u debian-sys-maint -p'password_from_file'
# 執行修改 root 密碼 SQL
mysql -u root -p'new_password'

遷移後必檢清單

檢查項命令/方法預期結果
服務啟動狀態net start / systemctl statusRunning
Root 本地登入mysql -u root -p成功
Root 遠程登入mysql -h IP -u root -p需授權:GRANT ALL ON *.* TO 'root'@'%' ...
數據完整性SELECT COUNT(*) FROM core_table;行數一致
字符集設置SHOW VARIABLES LIKE 'character_set%';均為 utf8mb4
時區設置SHOW VARIABLES LIKE 'time_zone';SYSTEM 或指定時區

進階:遷移至新版本(如 5.7 → 8.0)

  1. 備份原 data 目錄
  2. 安裝新版本,初始化生成新 data
  3. 使用 mysqldump --all-databases --routines --triggers > full.sql 導出邏輯備份
  4. 新版本導入:mysql < full.sql
  5. 執行 mysql_upgrade -u root -p 修復系統表

注意:直接複製舊 data 到新版本會導致系統表結構不匹配,必須走邏輯備份遷移。

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