參考鏈接:
https://blog.csdn.net/qq_27820551/article/details/101488430
https://blog.csdn.net/mukouping82/article/details/81105831
1、以管理員身份運行cmd,進入到mysql安裝的bin目錄下
2、先關閉mysql服務 net stop mysql,緊接着執行 mysqld --console --skip-grant-tables --shared-memory (為了跳過登錄進入mysql)
在這一步的時候我遇到的問題是執行完命令后打印以下內容
2020-02-10T20:21:30.946001Z 0 [System] [MY-010116] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.19) starting as process 11760 2020-02-10T20:21:30.983631Z 1 [ERROR] [MY-011011] [Server] Failed to find valid data directory. 2020-02-10T20:21:30.986677Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed. 2020-02-10T20:21:30.988397Z 0 [ERROR] [MY-010119] [Server] Aborting 2020-02-10T20:21:30.990846Z 0 [System] [MY-010910] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe: Shutdown complete (mysqld 8.0.19) MySQL Community Server - GPL.
解決方案:
1.刪除自己手動創建的data文件夾; 2.管理員權限cmd的bin目錄下,移除已錯誤安裝的mysqld服務;
C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld -remove MySQL The service doesn't exist!
3.在cmd的bin目錄下執行mysqld --initialize-insecure 會發現程序在mysql的根目錄下自動創建了data文件夾以及相關的文件
4.bin目錄下執行mysqld -install Service successfully installed.
5.bin目錄下執行mysql服務啟動net start mysql
循環第1,2步,正常輸出
3、以管理員身份新打開一個cmd,上面那個不要關閉。執行 mysql -uroot -p 就能免密進入
4、修改密碼(這里需要注意mysql8.0以上版本修改密碼方式與以前版本不同,密碼格式要求至少包含了數字、字母及特殊字符三種)
使用以前的方式(update user set password=password('123456') where user='root')修改密碼時會修改失敗,會提示:Found invalid password for user: 'root@localhost'; Ignoring user
1) use mysql; 2) update user set authentication_string='' where user='root';// 如果這個字段有值,先置為空,之前的版本密碼字段是password 3) flush privileges;// 刷新權限表 4) 執行select user,host from user;// 查看用戶及host,方便后續修改 5) ALTER user 'root'@'%' IDENTIFIED BY 'root@123';// 修改root 密碼
6) exit;//退出mysql
5、數據庫密碼加密方式修改
# 數據庫密碼加密規則還原成mysql_native_password ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root@123'; # 刷新權限 FLUSH PRIVILEGES; # 再查詢用戶及加密方式已修改 select host, user, plugin from user;
6、重啟mysql服務,密碼重置成功。