標籤:密碼重設 分享圖片 hand where 影響 圖片 auth 跳過 windows
1、原理
通過配置參數“skip_grant_tables”在mysql啟動時跳過grant_tables(授權表),從而通過命令來儲值root帳號的密碼
2、方式
首先需要停止mysql服務
(1)在my.ini檔案的[mysqld]塊下增加“skip_grant_tables”,然後重啟mysql服務,再以管理員權限開啟cmd執行一些列命令重設密碼
步驟如下:
A、找到my.ini檔案(右擊mysql服務找到可執行檔路徑,從所在的目錄或其它層級目錄搜尋),在[mysqld]塊下增加“skip_grant_tables”
B、重啟mysql服務
C、以管理員權限開啟cmd命令視窗,執行mysql -uroot –p直接斷行符號不用輸入密碼
D、選擇資料庫:use mysql
E、更新root的密碼:update user set authentication_string=password(‘新密碼‘) where user=‘root‘ and Host=‘localhost‘
F、重新整理許可權:flush privileges
G、退出:quit
H、重新登入:mysql -uroot -p提示輸入密碼,這時輸入密碼才能登入
I、回到 my.ini 設定檔移除“skip_grant_tables”,再重啟mysql
(2)直接通過命令指定參數“skip_grant_tables”啟動mysql,再執行命令修改密碼(與1的步驟除了指定跳過授權表參數的方式不同以外,其它都一樣)
A、在第一個cmd視窗執行 mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" --skip-grant-tables ---注意路徑(以你的實際情況為準)
其它步驟同上
參考:
Windows下MySQL5.7 root 密碼重設
80024706
Windows下Mysql5.7忘記root密碼的解決方案
https://www.cnblogs.com/yuwentims/p/9172463.html
3、遇到的坑
同過修改my.ini的方式配置“skip_grant_tables”再儲存千萬要注意編碼的格式“ANSI”
(1)用Notepad++將修改了my.ini的配置
(2)重啟mysql服務,就啟動不了(逾時),通過命令去執行接下來的操作會報“ERROR 1045 (28000): Access denied for user ‘ODBC‘@‘localhost‘ (using password: NO)”的錯誤
(3)第一想到的是去百度,無果後從系統事件日誌開始著手,發現了一些莫名其它的錯誤(其實部分是系統裡其它程式的錯誤記錄檔):
A、首先根據關鍵字看到的是“服務 MySQL57 意外停止。這發生了 7 次。”並沒卵用
B、然後就在這個錯誤的隔壁找其它錯誤 “應用程式-特定 使用權限設定並未向在應用程式容器 不可用 SID (不可用)中啟動並執行地址 LocalHost (使用 LRPC) 中的使用者 NT AUTHORITY\LOCAL SERVICE SID (S-1-5-19)授予針對 CLSID ”像這種不明不白的錯誤頭腦一發熱並沒有多想,然後就是百度解決並沒有屁用
解決方式:
https://www.cnblogs.com/ibgo/p/3550674.html
http://www.ntxz.net/?p=580
解決了這個日誌,但是對mysql並沒影響,現在才明白找錯了方向
(4)於是將所有的事件記錄清除,重啟computer
(5)終於發現了一條這樣的錯誤 “mysql 啟動報錯--發現系統錯誤2,系統找不到指定的檔案”
解決方式:
63262641?locationNum=4&fps=1
解決了報錯,mysql服務可以啟動了
接著執行重設的命令,終於報了一條有意義的錯“Found option without preceding group in config file:XXX; Fatal error in defaults handling.“,找到了原來是my.ini編碼惹得禍!
改成ANSI,一切就順利了…
參考:
MySQL報錯: Found option without preceding group in config file:XXX; Fatal error in defaults handling.
56512606
Mysql重設root密碼遇到的坑(忘記密碼)