MySQL8的密碼重置及一些相關的知識點?

前言

常講二手資料害死人,可要是真不看,連上哪裏找問題答案都不清楚,可能要撞的牆非撞不可吧!MySQL對咱們而言是個黑盒,我以爲不涉及到優化的問題,暫時沒必要過多探究它的運行機制,更況且還有那麼多可視化工具.網上常見的重置root密碼博客,不區分MySQL的版本,可實際上MySQL5和MySQL8仍是有一些不一樣的,可是裝了MySQL8還沒多長時間,文件安裝位置和數據存儲位置剛剛搞清楚,很難明白版本的區別會對實際操做形成哪些影響.html

環境:windows7系統

版本:MySQL8.0.16mysql

安裝方式:使用MySQL Installer安裝 sql

問題描述

1.root帳戶的密碼被你忘了怎麼辦?手賤了一下,動了系統用戶表又怎麼辦?windows

2.見識一下由密碼重置操做連帶的一系列知識點?安全

密碼重置的解決方案:

官方文檔:密碼重置的解決方案(寫得很好,除了不能徹底照搬之外,沒毛病)服務器

第一方案:重啓服務,讀取文件

1.打開cmd命令行,切換至mysql安裝位置,輸入net stop mysql80,關閉mysql服務;工具

2.建立一個txt文件,好比命名爲mysql-init.txt,寫入ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';(可是該文件不宜放入過深的文件路徑,若是過深,命令行在讀取該文件時,可能會報參數過多的錯誤,放在C盤或D盤根目錄就能夠)優化

3.輸入:mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --init-file=D:\mysql-init.txt --console.net

mysql-init文件路徑過深報錯:命令行

密碼修改爲功:

4.執行ctrl+c退出命令,net start mysql80,開啓mysql進程服務;

5.正常登錄, mysql -u root -p,密碼即爲新密碼,驗證成功,爲了安全,刪除mysql-init.txt文件

第二方案:跳過驗證,重置密碼

1.net stop mysql80;關閉mysql進程服務;

2.依舊使用cmd在mysql程序安裝位置的bin文件夾下,執行命令,輸入 mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --console --skip-grant-tables --shared-memory(沒有--shared-memory沒法跳過驗證,mysql5好像不須要添)

3.從新打開一個cmd,輸入mysql就能夠進入 由於安裝mysql,初始化過一遍,跳過驗證時默認root帳戶無密碼.(初始化與mysqld --initialize-insecure --console,mysqld --initializ --console等命令有相關 )
4.在mysql客戶端中,告訴服務器從新加載受權表,以便賬戶管理語句起做用: mysql> FLUSH PRIVILEGES;

5.而後更改'root'@'localhost' 賬戶密碼。將密碼替換爲您要使用的密碼 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

6.net start mysql80,從新啓動mysql80服務,root帳戶就可使用新密碼

密碼重置的相關知識點:

1.多數博客給出的方案沒法直接使用的緣由:使用使用MySQL Installer安裝後,mysql8.0安裝時數據和程序路徑是分開設置的 程序安裝路徑通常在:C:\Program Files\MySQL\MySQL Server 8.0 數據路徑通常在:C:\ProgramData\MySQL\MySQL Server 8.0,數據路徑這裏是有my.ini配置文件用於配置mysql,一些命令須要讀取該文件.mysql5沒試過,多是在一塊兒的

程序安裝路徑目錄:

程序安裝路徑bin文件夾目錄:
數據路徑目錄:

2.常見的3360,3360端口,是安裝時mysql服務默認使用的端口號;

3.數據路徑下的data文件夾和.ini配置文件.data中的.err文件會記錄一些錯誤,是否算是錯誤日誌還沒有驗證.my.ini配置文件未作過多研究,具體內容就不說了,密碼重置須要讀取該文件.初始化會重置Data文件夾和ini配置文件.(初始化命令的執行位置應該就是數據路徑,不想做大死,因此也沒試)初始化與mysqld --initialize-insecure --console,mysqld --initializ --console等命令有相關,一個會爲root帳號生成隨機密碼,一個會將密碼置爲空,日誌文檔會記錄密碼信息;

4.mysqld --initialize-insecure --console,mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --init-file=D:\mysql-init.txt --console等命令中的console,我以爲最好加上這一參數,能夠查看打印結果,能知道命令的執行成功與否;

5.net stop mysql80:當咱們在mysql客戶端輸入exit,只是斷開了客戶端和服務端的鏈接,後臺服務進程(即mysqld)依舊在運行,net stop mysql80是關閉後臺進程.爲何是mysql80,mysql8安裝時服務進程默認名爲mysql80,應該能夠改,或者mysqld --initializ --console初始化也行.

相關文章
相關標籤/搜索