目錄一、Linux下MySQL忘記root密碼情景再現1、停止MySQL服務2、安全模式啟動MySQL服務,並暫時跳過許可權表驗證以及禁用網路連接3、更新mysql.user表中root用戶的密碼。4、刷新MySQL的許可權緩存二、Windows下MySQL忘記密碼(8.0以上版本)情景再現1、通過管理 ...
目錄
一、Linux下MySQL忘記root密碼
情景再現
忘記MySQL連接密碼
1、停止MySQL服務
[root@localhost ~]# systemctl stop mysqld
2、安全模式啟動MySQL服務,並暫時跳過許可權表驗證以及禁用網路連接
[root@localhost ~]# mysqld_safe --skip-grant-tables --skip-networking &
mysqld_safe
是一個腳本,用於以安全模式啟動MySQL伺服器。這種方式啟動MySQL時,它會檢查一些基本條件,併在出現問題時嘗試修複。--skip-grant-tables
參數跳過了許可權表的檢查,這意味著在啟動時MySQL不驗證任何用戶憑據,任何人都可以無需密碼連接到MySQL伺服器。--skip-networking
參數則禁用了MySQL監聽任何網路介面,只允許本地Unix套接字連接。這樣做是為了增加安全性,防止在跳過許可權檢查時外部用戶通過網路訪問資料庫。
3、更新mysql.user
表中root
用戶的密碼。
update mysql.user set password=PASSWORD('123456') where user='root' and host='localhost';
4、刷新MySQL的許可權緩存
flush privileges;
二、Windows下MySQL忘記密碼(8.0以上版本)
情景再現
忘記MySQL連接密碼
1、通過管理員方式打開cmd,cmd程式路徑一般在C:\Windows\System32
2、進入到mysql安裝路徑中的bin文件,停止mysql服務
net stop mysql
忘記bin文件路徑可以跳過win+r輸入services.msc找到MySQL右擊屬性查看,最好提前複製下來
3、跳過許可權表驗證
mysqld --skip-grant-tables在8.0及以上版本不使用了
mysqld --console --skip-grant-tables --shared-memory
4、再用同樣的方法以管理員許可權進入mysql安裝路徑中的bin文件
必須是另外一個cmd視窗哦
上一個跳過許可權表驗證的視窗也不要關閉
5、更新root用戶密碼
update user set authentication_string='' where user='root';
alter user 'root'@'localhost' identified by '123';
flush privileges;
alter user 'root'@'localhost' identified by '123';
flush privileges;
6、重新啟動MySQL登錄
net start mysql
7、使用新密碼登錄
#不建議-p參數後直接加密碼,這裡為了展示方便
mysql -uroot -p123