MySQL服務的root密碼強行重置

字號+ 編輯: 种花家 修訂: 种花家 來源: 原创 2024-04-02 我要說兩句(1)

動不動就忘了root密碼是一件令人無比頭疼的事情,MySQL官方已經爲健忘的管理員準備了很好的後門來解決這個問題。

可以使用這個方法來找回丟失mysql超級管理員root的密碼。

1、停止mysql服務

net stop mysql
# 或者service mysqld stop

如果數據不重要, 你用任何手段殺掉mysql進程也行

2、進MYSQL的bin目錄來敲命令進入mysql安全模式

mysqld_safe --skip-grant-tables

當mysql安全模式起來之後, 不要關掉這個控制台, 再起一個黑窗口,不用輸入密碼就能進入數據庫。命令爲:

mysql -uroot -p

不用輸入密碼,直接按回車

sql命令開始修改root用戶的密碼

UPDATE mysql.user SET password=PASSWORD('新密碼') WHERE USER='root';

3、刷新權限表

FLUSH privileges;

這樣MYSQL超級管理員賬號,ROOT已經重新設置好了,結束mysql相關進程(taskkill /IM)然後net start mysql
mysql重新啓動後,就可以用新設置的root密碼登錄mysql了。

MySql8.x版本下強行重置密碼

最開始還是老套路, 先開一個命令行界面, 來啓動安全模式, 見上文2、進MYSQL的bin目錄來敲命令進入mysql安全模式

之後我們要了解到新版mysql默認廢除了password()函數, 改成了另外的玩法, 首先你要把user表裡的authentication_string置空,然後通過alter語法修改密碼。

update user set authentication_string='' where user='root';
mysql>ALTER user 'root'@'localhost' IDENTIFIED BY '新密碼';

這個時候如果你是在安全模式強行重置密碼的, 可能會遇到報錯:

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

解決方法是使用下述語句刷一下權限再重置密碼:

flush privileges;
mysql>ALTER user 'root'@'localhost' IDENTIFIED BY '新密碼';

如果語句仍然執行失敗, 試試前邊的'localhost'有可能是'%', 這是根據你當前對root賬號的IP適配範圍來決定的。


閲完此文,您的感想如何?
  • 有用

    293

  • 沒用

    32

  • 開心

    19

  • 憤怒

    10

  • 可憐

    7

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: 2702237 13835667

相關課文
  • [InnoDB] Failed to set NUMA memory policy of buffer pool page frames

  • 讓Mysql查詢後直接返回json字符串的方法

  • postgresql的pg_dump備份簡單方法

  • 使用sql語句在MySQL庫中去掉字段左邊、右邊指定字符串

我要說說
網上賓友點評
1 樓 IP 223.20.***.26 的嘉賓 说道 : 很久前
卧槽,终于找到个能用的了