恢復MySQL密碼筆記
互聯(lián)網(wǎng) 發(fā)布時間:2008-10-08 19:03:07 作者:佚名
我要評論
因為MySQL密碼存儲于數(shù)據(jù)庫mysql中的user表中
所以只需要將我windows 2003下的MySQL中的user表拷貝過來覆蓋掉就行了
在c:mysqldatamysql(linux 則一般在/var/lib/mysql/mysql/)目錄下有三個user表相關文件user.frm、user.MYD、user.MYI
user.frm //user表樣式文
因為MySQL密碼存儲于數(shù)據(jù)庫mysql中的user表中
所以只需要將我windows 2003下的MySQL中的user表拷貝過來覆蓋掉就行了
在c:\mysql\data\mysql\(linux 則一般在/var/lib/mysql/mysql/)目錄下有三個user表相關文件user.frm、user.MYD、user.MYI
user.frm //user表樣式文件
user.MYD //user表數(shù)據(jù)文件
user.MYI //user表索引文件
為保險起見,三個都拷貝過來,不過其實如果之前在要恢復的那個MySQL上沒有更改過表結構的話,只要拷貝user.MYD就行了
然后#. /etc/rc.d/init.d/mysql stop
#. /etc/rc.d/init.d/mysql start
#mysql -u root -p XXXXXX
好了,可以用windows 2003下mysql密碼登陸了
mysql>use mysql
mysql>update user set Password=PASSWORD('xxxxxx') where User='root';
這時候會出錯,提示user表只有讀權限
我分析了一下原因,只這樣的,因為user.*文件的權限分配是windows 2003下的,在windows 2003下我ls -l一看權限是666
在linux下我一看,拷過來后權限變成了600(其實正常情況下600就行了,只不過這里的文件屬主不是mysql,拷過來后的屬主變?yōu)榱藃oot,所以會出現(xiàn)權限不夠,這時候如果你改成權限666則可以了,當然這樣不好,沒有解決問題的實質),在/var/lib/mysql/mysql/下ls -l看了一下再
#chown -R mysql:mysql user.*
#chmod 600 user.*
//OK,DONE
重起一下MYSQL
重新連接
mysql>use mysql
mysql>update user set Password=PASSWORD('xxxxxx') where User='root';
mysql>FLUSH PRIVILEGES;
有一點值得注意:如果你windows 下mysql如果是默認配置的話,注意要還要執(zhí)行
mysql>delete from user where User='';
mysql>delete from user where Host='%';
mysql>FLUSH PRIVILEGES;
好了,到這里恢復密碼過程就完成了
這個方法么就是有點局限性,你必須也具備另外的user表文件
其他還有幾種方法
其它方法一(這個是網(wǎng)上流傳較廣的方法,mysql中文參考手冊上的)
1. 向mysqld server 發(fā)送kill命令關掉mysqld server(不是 kill -9),存放進程ID的文件通常在MYSQL的數(shù)據(jù)庫所在的目錄中。
killall -TERM mysqld
你必須是UNIX的root用戶或者是你所運行的SERVER上的同等用戶,才能執(zhí)行這個操作。
2. 使用`--skip-grant-tables' 參數(shù)來啟動 mysqld。 (LINUX下/usr/bin/safe_mysqld --skip-grant-tables , windows下c:\mysql\bin\mysqld --skip-grant-tables)
3. 然后無密碼登錄到mysqld server ,
>use mysql
>update user set password=password("new_pass") where user="root";
>flush privileges;
。你也可以這樣做:`mysqladmin -h hostname -u user password 'new password''。
4. 載入權限表: `mysqladmin -h hostname flush-privileges' ,或者使用 SQL 命令`FLUSH PRIVILEGES'。
5.killall -TERM mysqld
6.用新密碼登陸
其它方法二
直接用十六進制編輯器編輯user.MYD文件
不過這個里面我要說明一點,我這里編輯的時候發(fā)現(xiàn)個問題,加密的密碼串有些是連續(xù)存儲的,有些的最后兩位被切開了,后兩位存儲在后面其他地方.這一點我還沒想明白.還有注意一點就是編輯的是加密過的密碼串,也就是說你還是需要另外有user表文件。這種方法和我最上面介紹的方法的區(qū)別在于,這種方法直接編輯linux下的user表文件,就不需要重新改文件屬主和權限了
所以只需要將我windows 2003下的MySQL中的user表拷貝過來覆蓋掉就行了
在c:\mysql\data\mysql\(linux 則一般在/var/lib/mysql/mysql/)目錄下有三個user表相關文件user.frm、user.MYD、user.MYI
user.frm //user表樣式文件
user.MYD //user表數(shù)據(jù)文件
user.MYI //user表索引文件
為保險起見,三個都拷貝過來,不過其實如果之前在要恢復的那個MySQL上沒有更改過表結構的話,只要拷貝user.MYD就行了
然后#. /etc/rc.d/init.d/mysql stop
#. /etc/rc.d/init.d/mysql start
#mysql -u root -p XXXXXX
好了,可以用windows 2003下mysql密碼登陸了
mysql>use mysql
mysql>update user set Password=PASSWORD('xxxxxx') where User='root';
這時候會出錯,提示user表只有讀權限
我分析了一下原因,只這樣的,因為user.*文件的權限分配是windows 2003下的,在windows 2003下我ls -l一看權限是666
在linux下我一看,拷過來后權限變成了600(其實正常情況下600就行了,只不過這里的文件屬主不是mysql,拷過來后的屬主變?yōu)榱藃oot,所以會出現(xiàn)權限不夠,這時候如果你改成權限666則可以了,當然這樣不好,沒有解決問題的實質),在/var/lib/mysql/mysql/下ls -l看了一下再
#chown -R mysql:mysql user.*
#chmod 600 user.*
//OK,DONE
重起一下MYSQL
重新連接
mysql>use mysql
mysql>update user set Password=PASSWORD('xxxxxx') where User='root';
mysql>FLUSH PRIVILEGES;
有一點值得注意:如果你windows 下mysql如果是默認配置的話,注意要還要執(zhí)行
mysql>delete from user where User='';
mysql>delete from user where Host='%';
mysql>FLUSH PRIVILEGES;
好了,到這里恢復密碼過程就完成了
這個方法么就是有點局限性,你必須也具備另外的user表文件
其他還有幾種方法
其它方法一(這個是網(wǎng)上流傳較廣的方法,mysql中文參考手冊上的)
1. 向mysqld server 發(fā)送kill命令關掉mysqld server(不是 kill -9),存放進程ID的文件通常在MYSQL的數(shù)據(jù)庫所在的目錄中。
killall -TERM mysqld
你必須是UNIX的root用戶或者是你所運行的SERVER上的同等用戶,才能執(zhí)行這個操作。
2. 使用`--skip-grant-tables' 參數(shù)來啟動 mysqld。 (LINUX下/usr/bin/safe_mysqld --skip-grant-tables , windows下c:\mysql\bin\mysqld --skip-grant-tables)
3. 然后無密碼登錄到mysqld server ,
>use mysql
>update user set password=password("new_pass") where user="root";
>flush privileges;
。你也可以這樣做:`mysqladmin -h hostname -u user password 'new password''。
4. 載入權限表: `mysqladmin -h hostname flush-privileges' ,或者使用 SQL 命令`FLUSH PRIVILEGES'。
5.killall -TERM mysqld
6.用新密碼登陸
其它方法二
直接用十六進制編輯器編輯user.MYD文件
不過這個里面我要說明一點,我這里編輯的時候發(fā)現(xiàn)個問題,加密的密碼串有些是連續(xù)存儲的,有些的最后兩位被切開了,后兩位存儲在后面其他地方.這一點我還沒想明白.還有注意一點就是編輯的是加密過的密碼串,也就是說你還是需要另外有user表文件。這種方法和我最上面介紹的方法的區(qū)別在于,這種方法直接編輯linux下的user表文件,就不需要重新改文件屬主和權限了
相關文章
- “CMOS密碼”就是通常所說的“開機密碼”,主要是為了防止別人使用自已的計算機,設置的一個屏障2023-08-01

QQScreenShot之逆向并提取QQ截圖--OCR和其他功能
上一篇文章逆向并提取QQ截圖沒有提取OCR功能, 再次逆向我發(fā)現(xiàn)是可以本地調用QQ的OCR的,但翻譯按鈕確實沒啥用, 于是Patch了翻譯按鈕事件, 改為了將截圖用百度以圖搜圖搜索.2023-02-04
QQ截圖是我用過的最好用的截圖工具, 由于基本不在電腦上登QQ了, 于是就想將其提取出獨立版目前除了屏幕錄制功能其他都逆出來了, 在此分享一下2023-02-04
非系統(tǒng)分區(qū)使用BitLocker加密導致軟件無法安裝的解決方法
很多電腦用戶在考慮自己電腦磁盤分區(qū)安全時會采用 Windows 自帶的 BitLocker 加密工具對電腦磁盤分區(qū)進行加密。但有些人加密后就會忘記自己設置的密碼從而導致在安裝其它軟2020-11-25
防止離職員工帶走客戶、防止內部員工泄密、避免華為員工泄密事件的發(fā)生
這篇文章為大家詳細介紹了如何才能防止離職員工帶走客戶、防止內部員工泄密、避免華為員工泄密事件的發(fā)生,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-27
徹底防止計算機泄密、重要涉密人員離職泄密、涉密人員離崗離職前防范舉
近些年企業(yè)商業(yè)機密泄漏的事件屢有發(fā)生,這篇文章主要教大家如何徹底防止計算機泄密、重要涉密人員離職泄密、告訴大家涉密人員離崗離職前的防范舉措,具有一定的參考價值,2017-06-27- 最近有電腦用戶反應量子計算機可以破解下載的所有的加密算法嗎?其實也不是不可以,下面虛擬就為大家講解買臺量子計算機,如何分分鐘破解加密算法2016-09-26
怎么破解Webshell密碼 Burpsuite破解Webshell密碼圖文教程
webshell是以asp、php、jsp或者cgi等網(wǎng)頁文件形式存在的一種命令執(zhí)行環(huán)境,一種網(wǎng)頁后門。黑客通常會通過它控制別人網(wǎng)絡服務器,那么怎么破解webshell密碼呢?一起來看看吧2016-09-19- 本文討論了針對Linux系統(tǒng)全盤加密的冷啟動攻擊,大家都認為這種攻擊是可行的,但執(zhí)行這么一次攻擊有多難?攻擊的可行性有多少呢?需要的朋友可以參考下2015-12-28
防止泄露公司機密、企業(yè)數(shù)據(jù)防泄密軟件排名、電腦文件加密軟件排行
面對日漸嚴重的內部泄密事件,我們如何守護企業(yè)的核心信息,如何防止內部泄密也就成了擺在各個企業(yè)領導面前的一大問題。其實,針對內網(wǎng)安全,防止內部信息泄漏早已有了比較2015-12-17






