Windows和Linux環境下忘記MySQL連線密碼的解決辦法

misakivv發表於2024-04-12

目錄
  • 一、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連線密碼

image-20240325223127236

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;

image-20240325230005375


二、Windows下MySQL忘記密碼(8.0以上版本)

情景再現

忘記MySQL連線密碼

image-20240411102515545

1、透過管理員方式開啟cmd,cmd程式路徑一般在C:\Windows\System32

image-20240411112025520

2、進入到mysql安裝路徑中的bin檔案,停止mysql服務

net stop mysql

忘記bin檔案路徑可以跳過win+r輸入services.msc找到MySQL右擊屬性檢視,最好提前複製下來

image-20240411112356128


image-20240411112632312

3、跳過許可權表驗證

mysqld --skip-grant-tables在8.0及以上版本不使用了

mysqld --console --skip-grant-tables --shared-memory

image-20240411114511557

4、再用同樣的方法以管理員許可權進入mysql安裝路徑中的bin檔案

必須是另外一個cmd視窗哦

上一個跳過許可權表驗證的視窗也不要關閉

image-20240411114838292

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;

image-20240411122940676

6、重新啟動MySQL登入

net start mysql

image-20240411123306773

7、使用新密碼登入

#不建議-p引數後直接加密碼,這裡為了展示方便
mysql -uroot -p123

image-20240411123409127

相關文章