萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> 如何找回mysql密碼(linux/windows)

如何找回mysql密碼(linux/windows)

我們經常會把mysql root的密碼給忘了,那麼要如何找回來呢,重新安裝太麻煩了難得配置,下面我來介紹一下關於在linux中和mysql中兩種找回密碼的辦法吧。

Like *UNIX 版本:

下面是錯誤答案:

首先停止MySQL服務,然後使用skip-grant-tables參數啟動它:

 代碼如下 復制代碼 shell> /etc/init.d/mysql stop
shell> mysqld_safe --skip-grant-tables &此時無需授權就可以進入到MySQL命令行,使用SQL重置MySQL密碼:UPDATE mysql.user SET Password=PASSWORD('...') WHERE User='...' AND Host= '...';

FLUSH PRIVILEGES;為什麼說它是錯誤答案?因為在單純使用skip-grant-tables參數啟動服務後,除非數據庫服務器屏蔽了外網訪問,否則除了自己,其它別有用心的人也可能訪問數據庫,盡管重置密碼所需的時間很短,但俗話說不怕賊偷就怕賊惦記著,任何纰漏都可能釀成大禍。

下面是正確答案:

關鍵點是:在使用skip-grant-tables參數的同時,還要加上skip-networking參數:

 代碼如下 復制代碼 shell> mysqld_safe --skip-grant-tables --skip-networking

&接著使用SQL重置密碼後,記得去掉skip-networking,以正常方式重啟MySQL服務:

 代碼如下 復制代碼 shell> /etc/init.d/mysqld restart

上面的方法需要重啟兩次服務,實際上還能更優雅一點,重啟一次即可:

首先需要把用到的SQL語句保存到一個文本文件裡(/path/to/init/file):

 代碼如下 復制代碼

UPDATE mysql.user SET Password=PASSWORD('...') WHERE User='...' AND Host= '...';
FLUSH PRIVILEGES;接著使用init-file參數啟動MySQL服務,

shell> /etc/init.d/mysql stop
shell> mysqld_safe --init-file=/path/to/init/file

&此時,密碼就已經重置了,最後別忘了刪除文件內容,免得洩露密碼。

提示:本文用到的參數都是通過命令行mysqld_safe傳遞的,實際上也可以通過my.cnf。

參考:關於重置密碼,官方文檔裡有專門的描述:How to Reset the Root Password。

Windows版本:

1.以系統管理員身份登陸系統。
2.打開cmd-----net start 查看mysql是否啟動。啟動的話就停止net stop mysql.
3.我的mysql安裝在d:mysql5bin下。
4.跳過權限檢查啟動mysql.
    d:mysql5binmysqld-nt --skip-grant-tables --skip-networking
5.重新打開cmd。進到d:mysql5bin下:
    d:mysql5binmysqladmin -uroot flush-privileges password "newpassword"
    d:mysql5binmysqladmin -u root -p shutdown  這句提示你重新輸密碼。
6.在cmd裡net start mysql
7.搞定了。

copyright © 萬盛學電腦網 all rights reserved