目錄
- 一、Linux下MySQL忘記root密碼
- 情景再現
- 1、停止MySQL服務
- 2、安全模式啟動MySQL服務,並暫時跳過許可權表驗證以及禁用網路連線
- 3、更新
mysql.user
表中root
使用者的密碼。 - 4、重新整理MySQL的許可權快取
- 二、Windows下MySQL忘記密碼(8.0以上版本)
- 情景再現
- 1、透過管理員方式開啟cmd,cmd程式路徑一般在C:\Windows\System32
- 2、進入到mysql安裝路徑中的bin檔案,停止mysql服務
- 3、跳過許可權表驗證
- 4、再用同樣的方法以管理員許可權進入mysql安裝路徑中的bin檔案
- 5、更新root使用者密碼
- 6、重新啟動MySQL登入
- 7、使用新密碼登入
一、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