mysql 8.0 忘記root密碼后重置


 

最近狀態很不好,一直暈暈暈暈暈暈乎乎的,一個測試實例,下班前修改了一下root的密碼,接着就下班走人,第二天來發現root密碼忘了
剛好自動化安裝腳本整理好了,本來想着算了直接重裝實例得了,簡單省事也花不了半分鍾,反正是測試實例,沒什么大問題
發現有些思維定勢,所以最近一直暗示自己要做一些一上來就排斥的事,強制改變一下思維方式,那么就重置一下,不要通過重裝來繞過這個問題
試了好幾種方式,有的行有的不行,直說最簡單可行的一種方法:
 
1,停止實例(如果實例在開啟的話),非服務名啟動,也即用mysqld命令加上--skip-grant-tables方式啟動MySQL服務
   /usr/local/mysql-8.0.18-linux-glibc2.12-x86_64/bin/mysqld --defaults-file=/usr/local/mysql8_data/mysql8000/etc/my.cnf --skip-grant-tables &
  或者
  /usr/local/mysql-8.0.18-linux-glibc2.12-x86_64/bin/mysqld_safe --defaults-file=/usr/local/mysql8_data/mysql8000/etc/my.cnf  --skip-grant-tables &
2,本地以sock方式連接值該實例,指定實例的sock文件后回車讓輸密碼,(不用輸密碼)直接回車可正常連接
3,切換到mysql庫下,
    3.1.執行update user set authentication_string = '' where user = 'root';
    3.2.刷新權限,flush privilegs;
    3.3.重置密碼:alter user 'root'@'%' identified by '********';
    3.4.刷新權限,flush privilegs;
4,退出當前連接后,如果繼續采用步驟2中的方式連接,發現是連不上的,必須輸入密碼(也就是重置了密碼之后,必須指定密碼的方式登錄)

需要注意的是,忘記密碼后,以--skip-grant-tables啟動實例之后,在本地只能以sock連接方式登錄。
如果使用tcp/ip方式登錄是不可行的,提示輸入密碼之后,繼續回車,會提示 Can't connect to MySQL server on '127.0.0.1',不難理解,為確保安全,重置密碼只能在本地(sock)連接。

 

 

over,繼續干活。

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM