MySQL root 密碼破解好用方案介紹
以下的文章主要對MySQL root 密碼破解的幾種常用方法,為了保險(xiǎn)的目的,我們一共拷貝三個(gè)過來,如果我們之前在要恢復(fù)的MySQL數(shù)據(jù)庫上沒有更改過表的相關(guān)結(jié)構(gòu)的話,只要拷貝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’;
這時(shí)候會(huì)出錯(cuò),提示user表只有讀權(quán)限
我分析了一下原因,只這樣的,因?yàn)閡ser.*文件的權(quán)限分配是windows 2003下的,在windows 2003下我ls -l一看權(quán)限是666
在linux下我一看,拷過來后權(quán)限變成了600(其實(shí)正常情況下600就行了,只不過這里的文件屬主不是MySQL,拷過來后的屬主變?yōu)榱藃oot,所以會(huì)出現(xiàn)權(quán)限不夠,這時(shí)候如果你改成權(quán)限666則可以了,當(dāng)然這樣不好,沒有解決問題的實(shí)質(zhì)),在/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;
有一點(diǎn)值得注意:如果你windows 下MySQL如果是默認(rèn)配置的話,注意要還要執(zhí)行
- MySQL>delete from user where User=’’;
- MySQL>delete from user where Host=’%’;
- MySQL>FLUSH PRIVILEGES;
好了,到這里恢復(fù)MySQL root 密碼過程就完成了
這個(gè)方法么就是有點(diǎn)局限性,你必須也具備另外的user表文件
其他還有幾種方法
其它方法一(這個(gè)是網(wǎng)上流傳較廣的方法,MySQL中文參考手冊上的)
1. 向MySQLd server 發(fā)送kill命令關(guān)掉MySQLd server(不是 kill -9),存放進(jìn)程ID的文件通常在MySQL的數(shù)據(jù)庫所在的目錄中。
killall -TERM MySQLd
你必須是UNIX的root用戶或者是你所運(yùn)行的SERVER上的同等用戶,才能執(zhí)行這個(gè)操作。
2. 使用`--skip-grant-tables’ 參數(shù)來啟動(dòng) 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. 載入權(quán)限表:
MySQLadmin -h hostname flush-privileges’
或者使用 SQL 命令
`FLUSH PRIVILEGES’
5.killall -TERM MySQLd
6.用新密碼登陸
其它方法二
直接用十六進(jìn)制編輯器編輯user.MYD文件
不過這個(gè)里面我要說明一點(diǎn),我這里編輯的時(shí)候發(fā)現(xiàn)個(gè)問題,加密的密碼串有些是連續(xù)存儲的,有些的***兩位被切開了,后兩位存儲在后面其他地方.這一點(diǎn)我還沒想明白.還有注意一點(diǎn)就是編輯的是加密過的MySQL root 密碼串,也就是說你還是需要另外有user表文件。這種方法和我最上面介紹的方法的區(qū)別在于,這種方法直接編輯linux下的user表文件,就不需要重新改文件屬主和權(quán)限了
修正一下:我在Windows下的實(shí)際操作如下
1.關(guān)閉正在運(yùn)行的MySQL。
2.打開DOS窗口,轉(zhuǎn)到MySQL\bin目錄。
3.輸入
MySQLd-nt --skip-grant-tables
回車。如果沒有出現(xiàn)提示信息,那就對了。
4.再開一個(gè)DOS窗口(因?yàn)閯偛拍莻€(gè)DOS窗口已經(jīng)不能動(dòng)了),轉(zhuǎn)到MySQL\bin目錄。
5.輸入MySQL回車,如果成功,將出現(xiàn)MySQL提示符 >
6. 連接權(quán)限數(shù)據(jù)庫
>use MySQL;
(>是本來就有的提示符,別忘了***的分號)
6.改密碼:
> update user set password=password("123456") where user="root"; (別忘了***的分號)
7.刷新權(quán)限(必須的步驟)
>flush privileges;
8.退出
> \q
9.注銷系統(tǒng),再進(jìn)入,開MySQL,使用用戶名root和剛才設(shè)置的新密碼123456登陸。
據(jù)說可以用直接修改user表文件的方法:
關(guān)閉MySQL,Windows下打開MySQL\data\MySQL,有三個(gè)文件user.frm,user.MYD,user.MYI找個(gè)知道MySQL root 密碼的MySQL,替換相應(yīng)的這三個(gè)文件,如果user表結(jié)構(gòu)沒改過,一般也沒人去改,替換user.MYD就可以了。
也可以直接編輯user.MYD,找個(gè)十六進(jìn)制編輯器,UltraEdit就有這個(gè)功能。關(guān)閉MySQL,打開user.MYD。將用戶名root后面的八個(gè)字符改為565491d704013245,新密碼就是123456?;蛘邔⑺鼈儗?yīng)的十六進(jìn)制數(shù)字,(左邊那里,一個(gè)字符對應(yīng)兩個(gè)數(shù)字),改為 00 02 02 02 02 02 02 02,這就是空密碼,在編輯器右邊看到的都是星號*,看起來很象小數(shù)點(diǎn)。重開MySQL,輸入root和你的新密碼。
【編輯推薦】