在MySQL數(shù)據(jù)庫運(yùn)維過程中,root賬號密碼遺忘或誤刪除會導(dǎo)致管理權(quán)限喪失,需通過特定流程恢復(fù)訪問權(quán)限。本文針對不同操作系統(tǒng)環(huán)境,提供詳盡的解決方案,操作前請根據(jù)實際主機(jī)系統(tǒng)及問題類型選擇對應(yīng)步驟。

定位并編輯MySQL核心配置文件
Windows環(huán)境下,配置文件my.ini通常位于MySQL安裝目錄,若采用默認(rèn)環(huán)境路徑則為`d:\SOFT_PHP_PACKAGE\mysql\my.ini`。使用記事本打開該文件,在`[mysqld]`配置節(jié)點(diǎn)下添加`skip-grant-tables`參數(shù),此參數(shù)用于跳過權(quán)限表驗證,允許無密碼登錄。Linux環(huán)境下,需通過SSH連接服務(wù)器,執(zhí)行`mysql --help |grep my.cnf`命令定位配置文件,常見路徑包括`/etc/my.cnf`、`/etc/mysql/my.cnf`等。使用`vi /www/wdlinux/etc/my.cnf`(路徑以實際輸出為準(zhǔn))打開文件,按`i`進(jìn)入編輯模式,在`[mysqld]`節(jié)點(diǎn)下添加`skip-grant-tables`,完成后按`Esc`鍵輸入`:wq`保存退出。
重啟MySQL服務(wù)以應(yīng)用配置變更
Windows系統(tǒng)需通過“運(yùn)行”對話框輸入`services.msc`,打開服務(wù)管理器,找到MySQL服務(wù)項,右鍵選擇“重啟”使新配置生效。Linux系統(tǒng)則直接執(zhí)行`service mysqld restart`命令,服務(wù)重啟后將進(jìn)入無權(quán)限驗證模式,為后續(xù)操作提供訪問條件。
執(zhí)行root賬號恢復(fù)或密碼重置操作
Windows與Linux系統(tǒng)在服務(wù)重啟后,均可通過命令行工具進(jìn)行操作。打開命令提示符(Windows)或終端(Linux),輸入`mysql`登錄數(shù)據(jù)庫,執(zhí)行`use mysql;`切換至mysql系統(tǒng)數(shù)據(jù)庫。
若為root賬號被誤刪場景,需手動重建root用戶并授權(quán)。執(zhí)行以下SQL語句,創(chuàng)建具備完整權(quán)限的root賬號:
```sql
insert into user set Host='localhost',User='root',Password=Password('111111'),select_priv='y', insert_priv='y',update_priv='y',Alter_priv='y',delete_priv='y',create_priv='y',drop_priv='y',reload_priv='y',shutdown_priv='y',Process_priv='y',file_priv='y',grant_priv='y',References_priv='y',index_priv='y',create_user_priv='y',show_db_priv='y',super_priv='y',create_tmp_table_priv='y',Lock_tables_priv='y',execute_priv='y',repl_slave_priv='y',repl_client_priv='y',create_view_priv='y',show_view_priv='y',create_routine_priv='y',alter_routine_priv='y',Event_priv='Y',Trigger_priv='Y';
```
(注:復(fù)制語句時需去除回車換行符,確保語法正確)
若為root密碼遺忘場景,需根據(jù)MySQL版本執(zhí)行對應(yīng)密碼更新語句。MySQL 5.1及5.6版本使用:
```sql
update user set Password=Password('111111') where User='root'; flush privileges;
```
MySQL 5.7及以上版本因字段名變更,需執(zhí)行:
```sql
update mysql.user set authentication_string = password('testpassword') where user='root'; flush privileges;
```
(注:`111111`或`testpassword`需替換為自定義新密碼)
還原MySQL配置并重啟服務(wù)
完成賬號恢復(fù)或密碼重置后,必須移除臨時配置參數(shù)以恢復(fù)安全策略。Windows環(huán)境下,再次編輯my.ini文件,刪除或注釋`[mysqld]`節(jié)點(diǎn)下的`skip-grant-tables`(可添加`#`前綴),保存后重啟MySQL服務(wù)。Linux環(huán)境下,通過`vi /www/wdlinux/etc/my.cnf`打開配置文件,使用`dd`命令刪除`skip-grant-tables`行(移動光標(biāo)至該行連按兩次`dd`),輸入`:wq`保存退出,執(zhí)行`service mysqld restart`重啟服務(wù)。此時MySQL將恢復(fù)權(quán)限驗證機(jī)制,新密碼或重建的root賬號生效。