再不找到今天差點要通宵 mark起來~
實測mysqld –skip-grant-tables這樣的命令列,在mysql8中無法成功啟動,而且測試了該引數放在ini檔案裡面也同樣無法啟動
mysql的密碼是存放在user表裡面的,修改密碼其實就是修改表中記錄。
重置的思路是是想辦法不用密碼進入系統,然後用資料庫命令修改表user中的密碼記錄。
查了下,mysql5系統在網上建議的方法是以–skip-grant-tables引數啟動mysql服務,該引數指示在啟動時不載入授權表,因此啟動成功後root使用者可以空密碼登陸
mysqld –skip-grant-tables登陸之後可以用
update user set authentication_string=」 where user='root';這類命令設定密碼或者將密碼置空。
但是,實測mysqld –skip-grant-tables這樣的命令列,在mysql8中無法成功啟動,而且測試了該引數放在ini檔案裡面也同樣無法啟動
mysql8系統密碼重置的兩個思路
兩條思路,或者用–init-file引數在服務啟動時載入並執行修改密碼的命令檔案,該命令一旦執行,服務啟動後密碼即已經清除或者重置,啟動服務後即可以空密碼或指定密碼登入。
或者繼續研究–skip-grant-tables命令列引數下服務不能啟動的原因,解決問題,然後啟動服務後以空密碼登入,手工輸入命令,執行清除或者重置mysql.user表中的密碼記錄字段。
推薦使用前者。
具體操作流程如下:
方法一:利用–init-file引數解決//親測成功啟動
該引數指定服務啟動時先執行乙個包含sql命令檔案,因此,只需要將重置密碼的命令寫在該檔案中,以此引數指定啟動時執行該命令,啟動完成即可重置系統密碼了。
第一步,關掉系統服務
net stop mysql第二步,建立乙個文字檔案,內含一條密碼修改命令
alter user 『root'@'localhost' identified by 」;第三步:命令列方式啟動伺服器,指定啟動時執行上述的密碼修改命令檔案
mysqld –init-file=d:mysqlc.txt –console具體操作截圖
方法二,想辦法讓–skip-grant-tables引數用起來
同方法一,先關掉系統服務
實測,在mysql8系統下,用mysqld –console –skip-grant-tables –shared-memory可以無密碼啟動服務
服務啟動後,以空密碼登入系統
mysql.exe -u root然後執行sql命令將root使用者密碼設定為空
update mysql.user set authentication_string=」 where user='root' and host='localhost';具體操作截圖
mysql8的一些特性導致老方法重置不大管用了,建議使用–init-file引數解決
mysql8忘記密碼
本人環境 window10 安裝了乙個mysql5.7版本,然後又安裝了mysql8版本 安裝完mysql8會有個初始密碼,但是忘記複製就關閉了。所以本篇文章針對 無重要資料的非線上環境mysql。因為不確定是否會刪除歷史資料。1.先關閉mysql 2.安裝完mysql8的目錄是這樣的,刪除data...
MySQL 8 忘記密碼
access denied for user root localhost using password no 忘記密碼該怎麼操作?在mysql安裝目錄下,開啟my.ini檔案,在 mysqld 下新增一行,使其登入時跳過許可權檢查。儲存,退出,重啟mysql服務 net stop mysql ne...
mysql8忘記root密碼
步驟一 進入 vim etc my.cnf 加入skip grant tables 步驟二 然後重啟mysql service mysqld restart或者 進入 bin systemctl restart mysqld.service步驟三 進入mysql 修改密碼 mysql8密碼要求大小寫...