敘:好久不用本地的MySQL庫了,今天自己學點東西,結果發現密碼忘了,自己安裝的是MySQL8的數據庫,在重置root密碼時發現MySQL8的數據庫重置密碼的操作和之前的版本並不相同,特此記錄一下!
MySQL8 忘記root密碼 重置root密碼
1、第一步:置空root原密碼
1.1、“越獄”跳過root密碼進行登錄
- 思路: 使用管理員權限模式打開CMD面板,輸入:
mysqld --console --skip-grant-tables --shared-memory
(在此之前確定MySQL的所有服務都是關閉的,可以先使用net stop mysql80
來進行關閉MySQL的服務,“MySQL80”是指自己電腦上MySQL的服務名,不要寫錯了,我的是MySQL80,各位童鞋請根據自己的進行改變)。 - 命令:
mysqld --console --skip-grant-tables --shared-memory
- 操作樣式如下所示:
1.2、置空root密碼操作
1.2.1、進入MySQL操作空間
- 思路: 再次以管理員身份打開一個CMD面板,上一個面板不要關閉也不要進行任何操作,在新打開的CMD面板中輸入:
mysql -uroot -p
回車,提示讓你輸入密碼,之前的步驟已經幫我們越過了密碼校驗功能,我們不用輸入任何東西,直接再次回車,即可進入MySQL中,如下圖: - 命令:
mysql -uroot -p
- 操作樣式如下圖所示:
進入MySQL命令操作模式;
1.2.2、去除root用戶的密碼
-
思路: 輸入三條命令來去除root用戶的密碼;
-
命令:
use mysql;
// 進入操作MySQL數據庫的模式;update user set authentication_string=’’ where user=’root’;
// 更新置空root用戶的校驗字符串(可以理解為就是登陸密碼)select user, authentication_string from mysql.user;
// 查看root用戶的校驗字符串是否被置空;
-
操作樣式如下所示:
可以清晰地看到root用戶的authentication_string
字段被置空成功了;
1.2.3、將之前的操作刷新保存
- 命令:
flush privileges
2、第二步:配置root用戶密碼並測試
2.1、配置root用戶密碼
- 思路: 關閉之前的兩個CMD命令行面板,然后重新在啟動一個以管理員身份運行的CMD命令行面板,然后開始給root設置密碼(其實現在的root用戶的密碼已經被清空,如果對於root密碼不在意的即使不設置亦可以;),在CMD中輸入以下
- 命令:
net start MySQL80
//啟動mysqlmysql -uroot -p
// 使用root用戶進行登陸MySQL,出現的密碼輸入提示不用管,直接回車即可use mysql;
//alter user 'root'@'localhost' identified by '你的新密碼';
// 給root用戶的密碼插入值select user, authentication_string from mysql.user;
// 查看root用戶的校驗字符串插入是否操作成功flush privileges;
// 刷新之前的操作exit
// 退出MySQL操作空間net stop mysql80
//關閉MySQL服務
- 操作如下圖所示(上邊的命令也許並未在圖中完全顯示,按照命令走就OK了):
2.2、更改結果測試
-
思路: 關閉已有的CMD命令行面板,重新開啟一個管理員身份操作的CMD命令行面板,然后開始登陸,代碼如下:
-
命令:
net start mysql80
// 打開MySQL服務mysql -uroot -p
// 登陸MySQL,然后輸入之前設定的root用戶的密碼,回車即可;
-
操作樣式如下:
登陸成功~ -
Navicat連接數據庫測試,如下圖:
測試成功~
pass1:本來想在置空了root用戶密碼后直接再給root用戶進行設置密碼的,但是發現因為“越獄”的跳過密碼的命令導致無法立即賦值,因此才需要關閉了操作之后再進行設定root密碼~
pass2:在mysql8.0以及以上版本中update mysql.user set password='newpassword' where user='root';
和update mysql.user set password=PASSWORD('newpassword') where User='root';
等一些命令已經不允許被使用了;
《END》