問題描述
之前開發(fā)一個項目铆铆,在本地建了一個MySQL數(shù)據(jù)庫,后來項目擱淺丹喻,MySQL數(shù)據(jù)庫就一直躺在硬盤里薄货。也不知道過了多久,現(xiàn)在需要回過頭來繼續(xù)開發(fā)項目碍论,但是MySQL密碼早就忘記了谅猾,尷尬⊙﹏⊙‖∣
好在MySQL服務(wù)和安裝目錄都還在,所以嘗試著按照網(wǎng)上的教程來重置MySQL密碼。
啟動MySQL税娜、并重置密碼
MySQL通常是通過服務(wù)來啟動先煎,不過除了服務(wù)來啟動,還可以通過命令行的方式來啟動巧涧。
-
首先找到打開服務(wù)窗口薯蝎,找到MySQL服務(wù),雙擊查看服務(wù)詳情谤绳。MySQL服務(wù)
- 通過服務(wù)詳情占锯,我們可以看到實際該服務(wù)的執(zhí)行命令為
D:\mysqlx64_5.6.16\bin\mysqld MySQL
,即實際上服務(wù)是通過調(diào)用mysql
命令行來啟動MySQL服務(wù)的缩筛,其中所以我們可以手動在命令行窗口來通過執(zhí)行mysqld
命令來啟動mysql消略。如下:
mysqld MySQL
可以經(jīng)過一頓操作之后,發(fā)現(xiàn)通過上面的操作之后瞎抛,MySQL進程并沒有啟動艺演,真是大寫的尷尬。
進程里并沒有MySQL
后來通過一番排(bai)查(du)之后發(fā)現(xiàn)如果需要通過命令行來啟動MySQL桐臊,則需要添加
--console
參數(shù)胎撤,即完整的命令應(yīng)該是:
mysqld --console
通過上面的命令,可以成功啟動MySQL断凶,并且進程列表里也能找到mysqld的進程:
mysqld --console執(zhí)行效果
進程列表里也能看到mysqld的進程
- 接下來算是比較關(guān)鍵的一步伤提,就是通過跳過權(quán)限驗證的參數(shù)來啟動MySQL。
在命令行窗口认烁,按Ctrl + C
結(jié)束上面的MySQL進程之后肿男,另外添加skip-grant-tables
參數(shù),可以以跳過權(quán)限驗證的方式啟動MySQL却嗡。
mysqld --console --skip-grant-tables
此時我們可以看到MySQL正常啟動:MySQL正常啟動
- 通過上述方式啟動MySQL后舶沛,我們再通過數(shù)據(jù)庫連接工具,比如Navicat窗价,連接本地的MySQL如庭。由于MySQL啟動時加了
skip-grant-tables
參數(shù),此時我們可以輸入任何的賬號和密碼登錄MySQL舌镶。登錄MySQL - 修改MySQL中root的密碼柱彻。
MySQL中所有的用戶信息都存在mysql.user
表,我們可以通過修改該表的相關(guān)信息來達到修改密碼的目的餐胀。
mysql.user表
update mysql.user set password = password ('abc123') where user = 'root'; -- 其中abc123為新密碼
flush PRIVILEGES; -- 刷新MySQL的系統(tǒng)權(quán)限相關(guān)表
- 執(zhí)行完上述操作后哟楷,就可以通過正常方式重新啟動MySQL,并用新密碼進行登陸了否灾。
寫在最后
對于參數(shù)skip-grant-tables
卖擅,除了可以在命令行的的方式添加,也可以通過修改MySQL配置文件my.ini
的方式添加,在此不展開來講惩阶。對于正式生產(chǎn)環(huán)境挎狸,一定要記得關(guān)閉該參數(shù),切記6峡O谴摇!
參考鏈接:
https://blog.csdn.net/m0_58016522/article/details/121669236