問題描述
之前開發(fā)一個(gè)項(xiàng)目,在本地建了一個(gè)MySQL數(shù)據(jù)庫,后來項(xiàng)目擱淺,MySQL數(shù)據(jù)庫就一直躺在硬盤里。也不知道過了多久,現(xiàn)在需要回過頭來繼續(xù)開發(fā)項(xiàng)目,但是MySQL密碼早就忘記了,尷尬⊙﹏⊙‖∣
好在MySQL服務(wù)和安裝目錄都還在,所以嘗試著按照網(wǎng)上的教程來重置MySQL密碼。
啟動(dòng)MySQL、并重置密碼
MySQL通常是通過服務(wù)來啟動(dòng),不過除了服務(wù)來啟動(dòng),還可以通過命令行的方式來啟動(dòng)。
-
首先找到打開服務(wù)窗口,找到MySQL服務(wù),雙擊查看服務(wù)詳情。MySQL服務(wù)
- 通過服務(wù)詳情,我們可以看到實(shí)際該服務(wù)的執(zhí)行命令為
D:\mysqlx64_5.6.16\bin\mysqld MySQL,即實(shí)際上服務(wù)是通過調(diào)用mysql命令行來啟動(dòng)MySQL服務(wù)的,其中所以我們可以手動(dòng)在命令行窗口來通過執(zhí)行mysqld命令來啟動(dòng)mysql。如下:
mysqld MySQL
可以經(jīng)過一頓操作之后,發(fā)現(xiàn)通過上面的操作之后,MySQL進(jìn)程并沒有啟動(dòng),真是大寫的尷尬。
進(jìn)程里并沒有MySQL
后來通過一番排(bai)查(du)之后發(fā)現(xiàn)如果需要通過命令行來啟動(dòng)MySQL,則需要添加
--console參數(shù),即完整的命令應(yīng)該是:
mysqld --console
通過上面的命令,可以成功啟動(dòng)MySQL,并且進(jìn)程列表里也能找到mysqld的進(jìn)程:
mysqld --console執(zhí)行效果
進(jìn)程列表里也能看到mysqld的進(jìn)程
- 接下來算是比較關(guān)鍵的一步,就是通過跳過權(quán)限驗(yàn)證的參數(shù)來啟動(dòng)MySQL。
在命令行窗口,按Ctrl + C結(jié)束上面的MySQL進(jìn)程之后,另外添加skip-grant-tables參數(shù),可以以跳過權(quán)限驗(yàn)證的方式啟動(dòng)MySQL。
mysqld --console --skip-grant-tables
此時(shí)我們可以看到MySQL正常啟動(dòng):MySQL正常啟動(dòng)
- 通過上述方式啟動(dòng)MySQL后,我們再通過數(shù)據(jù)庫連接工具,比如Navicat,連接本地的MySQL。由于MySQL啟動(dòng)時(shí)加了
skip-grant-tables參數(shù),此時(shí)我們可以輸入任何的賬號和密碼登錄MySQL。登錄MySQL - 修改MySQL中root的密碼。
MySQL中所有的用戶信息都存在mysql.user表,我們可以通過修改該表的相關(guān)信息來達(dá)到修改密碼的目的。
mysql.user表
update mysql.user set password = password ('abc123') where user = 'root'; -- 其中abc123為新密碼
flush PRIVILEGES; -- 刷新MySQL的系統(tǒng)權(quán)限相關(guān)表
- 執(zhí)行完上述操作后,就可以通過正常方式重新啟動(dòng)MySQL,并用新密碼進(jìn)行登陸了。
寫在最后
對于參數(shù)skip-grant-tables,除了可以在命令行的的方式添加,也可以通過修改MySQL配置文件my.ini的方式添加,在此不展開來講。對于正式生產(chǎn)環(huán)境,一定要記得關(guān)閉該參數(shù),切記!??!
參考鏈接:
https://blog.csdn.net/m0_58016522/article/details/121669236
