記一次MySql重置root密碼無效

避涼閒庭發表於2022-04-11

說起這個事情吧也相對來說比較尷尬,對於一個技術來說忘記密碼然後找回密碼都是相當簡單的一個事情,但是在生產環境中沒有儲存記錄只能是自己的失職,尷尬就尷尬在明明重置成功了卻沒有生效,弄得好幾個工程師在哪裡撓頭!!!也是經過不斷得摸索測試方案最後也是解決了這個問題,下面就簡單跟大家分享一下:

專案場景:

這個場景比較簡單,因為我們是測試環境嘛,所以也就只有一臺MySql資料庫,只需要對這個資料庫進行密碼修改就可以了,而且也不用擔心搞壞得問題,再一個最最最最重要得就是它可以隨時進行重啟,不需要考慮業務情況,當然在生產環境大家一定要考慮時間空檔期,不然資料丟失就很麻煩了,而且操作的又是資料庫,就相當於在腦袋上開刀一樣,廢話不多說了下面是環境情況:

作業系統:windows server 2019 資料中心版本
MySql:經典安裝 MySql 5.6

在這裡插入圖片描述

問題描述

問題就是:使用--skip-grant-tables跳過許可權,然後使用update修改root密碼後,使用 FLUSH PRIVILEGES;重新整理,使用新密碼連線mysql提示密碼錯誤,無非登入
在這裡插入圖片描述
下面是我重置密碼的過程,大家也可以參考下,看看是不是有忽略的地方

  1. 停止mysql服務
    在這裡插入圖片描述
  2. 使用--skip-grant-tables跳過許可權啟動
    在這裡插入圖片描述
  3. 登入並修改密碼
    在這裡插入圖片描述
    在這裡插入圖片描述
  4. 關閉mysql程式及命令列視窗,重新啟動mysql服務,嘗試登陸
    在這裡插入圖片描述
    嘗試登陸
    在這裡插入圖片描述
    明明密碼修改成功了,密碼也輸入成功了,結果卻在登陸的時候無發登陸成功

原因分析:

經我們幾個人的不斷測試,不斷嘗試,最終發現由於--skip-grant-tables這個引數造成的,其實說白了這個就是啟動時生效了但是沒有指定mysql的配置檔案,所以這個模式下的所有操作都是無效的,設定成功了也不會修改真正的資料庫檔案的,也就是你把這個程式關掉了,他自己也就把資料還原回之前的了,這個跟mysql的安裝方式也有關的,採用mysql免安裝版本用以上操作就可以生效,但是按照版本就無法生效的,我已經嘗試多個版本都是這樣。
也可能不是這個原因,有異議的小夥伴歡迎大家留言一起探討哦
下面是需要修改的跳過許可權啟動的命令

mysqld.exe --defaults-file="my.ini路徑" --skip-grant-tables

解決方案:

  1. 正常關閉mysql服務
    在這裡插入圖片描述
  2. 設定跳過許可權啟動mysql(這裡是和之前操作不一樣的地方)
mysqld.exe --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.6\my.ini" --skip-grant-tables

--defaults-file="C:\ProgramData\MySQL\MySQL Server 5.6\my.ini" //這個直接在服務中找到mysql服務,右鍵屬性就可以看到這個路徑了
在這裡插入圖片描述
前面是mysqld的啟動程式位置,後面是指定mysql的配置檔案也就是my.ini檔案
在這裡插入圖片描述
啟動成功
3. 修改密碼
開啟新命令列視窗,連線mysql
在這裡插入圖片描述
連線成功
修改密碼
在這裡插入圖片描述
修改成功,退出登陸,重啟mysql服務
在這裡插入圖片描述
4. 嘗試登陸
啟動成功,嘗試使用新密碼進行登陸
在這裡插入圖片描述
發現已經連線成功
CSDN地址:“https://blog.csdn.net/KH_FC/article/details/124091758?spm=1001.2014.3001.5502”,這個部落格也是我的哦

相關文章