適用:如果你已經安裝好MySQL,但因為忘記root密碼且不想重新下載而無法建立連接,那么本文可能對你有用
前提:已經在環境變量中配置好mysql路徑
步驟:
Step1.准備配置文件
(1)查看根目錄MySQL\MySQL Server 8.0下是否有my.ini文件
若無則手動添加,內容如下:
[mysqld] basedir=C:\Program Files\MySQL\MySQL Server 8.0 datadir=C:\Program Files\MySQL\MySQL Server 8.0\data port = 3306 character-set-server=utf8mb4 default_authentication_plugin=mysql_native_password [mysql]default-character-set=utf8mb4
注: 這里使用utfmb4而非一般的utf8是因為后來出現系統警告:utf8默認為utf8mb3,建議修改成utf8mb4,否則會引起歧義
注:若因權限無法創建文件,可以在桌面先創建一個txt文檔,將my.ini內容復制進去,再修改txt文檔為my.ini,最后拖進根目錄下。
(2)查看根目錄下是否有data文件夾,若無則創建一個。
Step2.獲得初始化密碼
以管理員身份打開cmd,執行如下指令
mysqld -- initialize --console
如果成功,沒有任何[ERROR]出現,則記住以[Note]開頭的新生成密碼(若無則說明密碼為空),並跳轉到step 5
如果出現無法初始化data文件等情況,繼續進行step3
2020-05-27T13:15:21.009962Z 0 [System] [MY-010116] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.18) starting as process 9524 2020-05-27T13:15:21.036492Z 1 [ERROR] [MY-011011] [Server] Failed to find valid data directory. 2020-05-27T13:15:21.041391Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed. 2020-05-27T13:15:21.043381Z 0 [ERROR] [MY-010119] [Server] Aborting 2020-05-27T13:15:21.045730Z 0 [System] [MY-010910] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe: Shutdown complete (mysqld 8.0.18) MySQL Community Server - GPL.
Step3.刪除mysqld
先刪除根目錄下data文件夾的內容,再執行mysqld -remove MySQL命令,刪除mysqld
C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld -remove MySQL
結果如下:
Step4.重新初始化mysqld
執行如下命令:
C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld --initialize
可以看到data文件夾下生成新文件
Step5.安裝mysqld
C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld --install Service successfully installed.
Step6.啟動mysql
C:\WINDOWS\system32>net start mysql MySQL 服務正在啟動 . MySQL 服務已經啟動成功。
Step7.登錄mysql
C:\WINDOWS\system32>mysql -u root -p
此處提示輸入密碼,如果前面有新密碼生成,則使用之,若無,則直接按回車。進入以下界面
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.18 MySQL Community Server - GPL Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
Step8.更換密碼
使用ALTER修改密碼(下面的password處換成你自己的新密碼)
mysql> ALTER USER "root"@"localhost" IDENTIFIED BY "password"; Query OK, 0 rows affected (0.01 sec)
最后去mysql workbench建立連接,輸入密碼,成功連接。
PS:
(1)如果出現以下端口占用提示
2020-05-27T13:19:25.830301Z 0 [System] [MY-010116] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.18) starting as process 13376 2020-05-27T13:19:27.055277Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. 2020-05-27T13:19:27.064723Z 0 [ERROR] [MY-010262] [Server] Can't start server: Bind on TCP/IP port: 通常每個套接字地址(協議/網絡地址/端口)只允許使用一次。 2020-05-27T13:19:27.070412Z 0 [ERROR] [MY-010257] [Server] Do you already have another mysqld server running on port: 3306 ? 2020-05-27T13:19:27.082431Z 0 [ERROR] [MY-010119] [Server] Aborting 2020-05-27T13:19:28.077042Z 0 [System] [MY-010910] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe: Shutdown complete (mysqld 8.0.18) MySQL Community Server - GPL.
說明3306端口被占用,新打開cmd,查看端口占用情況
C:\WINDOWS\system32>netstat -ano|findstr "3306"
殺死對應的進程
C:\WINDOWS\system32>taskkill/f /pid 15060 /f
(2)如果mysql服務無法啟動,且沒有報錯,則說明你的mysql已經登錄或使用,或者3306端口被占用,關閉對應進程就行。
(3)如果下次打開MySQL Workbench連接時又提示3306端口被占用或者密碼錯誤,則按照上面方法查看3306端口是否被占用,殺死相應進程。如果還是不行,就再次進入MySQL Server的bin目錄下執行net start mysql命令,將服務開啟,再去MySQL Workbench連接