巧設(shè)置保平安還原企業(yè)數(shù)據(jù)庫密碼
對于中小企業(yè)來說經(jīng)常會遇到網(wǎng)絡(luò)應(yīng)用數(shù)據(jù)統(tǒng)計(jì),這些環(huán)境都需要有數(shù)據(jù)庫的搭配,然而作為企業(yè)的網(wǎng)絡(luò)管理員不知道你是否遇到過數(shù)據(jù)庫密碼忘記或者被非法入侵者攻擊篡改信息而無法順利連接數(shù)據(jù)庫的問題,實(shí)際上只要我們有主機(jī)的控制權(quán),能夠物理接觸服務(wù)器,那么恢復(fù)數(shù)據(jù)庫密碼將變得不再困難,今天就請各位跟隨筆者一起學(xué)習(xí)如何巧設(shè)置保平安還原企業(yè)MYSQL數(shù)據(jù)庫的密碼。
一,MYSQL數(shù)據(jù)庫及帳戶密碼概述:
MYSQL是很多企業(yè)都使用的數(shù)據(jù)庫程序,他和PHP語言很好的兼容,默認(rèn)情況下MYSQL會開啟一個名為root的帳號,這個帳號具備最高的數(shù)據(jù)庫讀寫權(quán)限,類似于我們系統(tǒng)的管理員administrator,他的重要性不言而喻,因此root帳號也逐漸成為黑客入侵者的對象。而與此同時很多企業(yè)網(wǎng)絡(luò)管理員為了避免密碼設(shè)置安全性比較弱而將root密碼設(shè)置的非常復(fù)雜,大小寫加SHIFT和數(shù)字,結(jié)果不小心自己忘記了將自身鎖在了數(shù)據(jù)庫之外。以上種種情況在實(shí)際中都是存在的,遇到這些問題時我們該如何操作呢?下面筆者就從兩方面來介紹經(jīng)典故障的解決步驟。
二,MYSQL命令行本機(jī)登錄故障:
眾所周知MYSQL數(shù)據(jù)庫的管理和操作一般都是通過一條條SQL語句來完成,對數(shù)據(jù)庫熟悉的用戶會直接在命令提示窗口通過一條條命令完成。然而在實(shí)際使用過程中我們很可能會遇到命令行本機(jī)登錄故障。下面我們就來分析無法本機(jī)通過命令行登錄MYSQL的原因。
(1)從用戶參數(shù)入手解決odbc @ localhost登錄出錯故障:
第一步:在命令行下輸入mysql運(yùn)行連接數(shù)據(jù),提示“access denied for user odbc @ localhost,using password:no”。然后就直接退出返回到命令提示窗口光標(biāo)下了。(如圖1)
![]() |
第二步:我們修改運(yùn)行命令,使用mysql -u root指令后回車,也就是說通過-u參數(shù)添加要登錄的用戶帳戶信息,執(zhí)行完畢后我們就可以順利的連接到MYSQL數(shù)據(jù)庫控制臺了。(如圖2)
![]() |
2)從匿名帳戶入手解決odbc @ localhost登錄出錯故障:
當(dāng)然除了上面提到的通過-u參數(shù)添加對應(yīng)的連接帳戶信息解決問題外,我們還可以通過建立匿名帳戶來容許匿名用戶連接數(shù)據(jù)庫進(jìn)行相關(guān)權(quán)限的操作,這樣就不用為每次登錄MYSQL都需要root帳戶密碼而麻煩了。具體操作如下。
第一步:通過“開始”->“程序”->“MYSQL”->“MYSQL SERVER”找到mysql server instance config wizard程序,啟動MYSQL配置向?qū)А?如圖3)
![]() |
第二步:在設(shè)置向?qū)Ы⑦^程中我們會看到有mysql server instance configuration項(xiàng),這里輸入的是root帳戶密碼,而下面有一個create an anonymous account的選項(xiàng),對應(yīng)的是建立一個匿名登錄帳戶,只要我們在配置向?qū)е袑⒋诉x項(xiàng)打上對勾選中,那么我們就可以不通過-u參數(shù)而直接登錄數(shù)據(jù)庫了。(如圖4)
![]() |
(3)數(shù)據(jù)庫啟動故障:
在我們安裝MYSQL數(shù)據(jù)庫過程中最后階段需要執(zhí)行相關(guān)命令,很多用戶會在執(zhí)行到“apply security settiongs”時出現(xiàn)錯誤提示——access denied for user root@locaohost using password:yes。并且反復(fù)retry重新嘗試無法通過,如果選擇skip直接跳過的話MYSQL數(shù)據(jù)庫運(yùn)行又不正常。(如圖5)
![]() |
經(jīng)過筆者研究發(fā)現(xiàn)這個故障的根源是因?yàn)楸緳C(jī)安裝了防火墻造成的,我們只需要關(guān)閉第三方防火墻軟件即可,不過對于XP系統(tǒng)用戶來說由于XP系統(tǒng)內(nèi)置了Windows防火墻,所以我們還需要在“控制面板”->“防火墻”中的“常規(guī)”標(biāo)簽下將其“關(guān)閉”。(如圖6)
![]() |
當(dāng)然關(guān)閉防火墻可能引起很多其他安全問題,這時我們可以利用防火墻的規(guī)則來只容許MYSQL數(shù)據(jù)庫的連接通訊,以XP系統(tǒng)默認(rèn)防火墻為例,找到“例外”標(biāo)簽,然后執(zhí)行“添加程序”按鈕,在打開的“添加程序”窗口制定MYSQL.EXE程序。確定后我們的MYSQL數(shù)據(jù)庫就可以順利連接了,而防火墻照樣正常工作順利保障系統(tǒng)安全。(如圖7)
![]() |
小結(jié)——在我們通過命令提示窗口連接數(shù)據(jù)庫時一定要使用mysql -u root -p命令來連接,如果不加-p參數(shù)提示連接密碼的話也可能會出現(xiàn)“access denied for user root @ localhost using password:no”的錯誤提示,加上-p參數(shù)后再輸入正確密碼才能夠登錄到MYSQL管理控制臺。 (如圖8)
![]() |
三,MYSQL數(shù)據(jù)庫ROOT密碼恢復(fù)功略:
如果不小心把MYSQL數(shù)據(jù)庫密碼忘記了該怎么恢復(fù)呢?如果MYSQL數(shù)據(jù)庫密碼被黑客入侵者攻擊篡改又該如何亡羊補(bǔ)牢避免損失呢?下面我們就來看看MYSQL數(shù)據(jù)庫ROOT密碼恢復(fù)的步驟。
正常情況下我們通過mysql -u root -p命令然后輸入正確的root帳戶密碼可以順利登錄到MYSQL管理控制臺。(如圖9)如果密碼忘記或輸入錯誤的話會出現(xiàn)關(guān)閉連接的提示——“access denied for user root @ localhost using password:yes”。(如圖10)
![]() |
![]() |
(1)巧重裝解決密碼問題:
遇到密碼忘記的情況我們可以采取卸載后重新安裝的方法解決,再次執(zhí)行MYSQL數(shù)據(jù)庫安裝程序,然后選擇remove instance選項(xiàng)即可馬上卸載,當(dāng)然通過程序里MYSQL程序下的配置向?qū)б材軌蛲瓿尚遁d刪除工作。刪除完畢我們再重新安裝設(shè)置密碼即可,因?yàn)镸YSQL程序與數(shù)據(jù)庫文件都是分開存在的,所以我們不用擔(dān)心數(shù)據(jù)庫文件的損壞。(如圖11)
![]() |
(2)編輯user.myd破解ROOT密碼:
另外在我們的MYSQL安裝目錄下有一個名為user.myd的文件,一般來說他保存在mysql\data\mysql目錄下,這個文件是MYSQL帳戶配置文件,我們可以通過編輯此文件實(shí)現(xiàn)破解MYSQL數(shù)據(jù)庫root密碼的目的。用超文本編輯器打開該文件找到對應(yīng)項(xiàng)進(jìn)行修改即可。(如圖12)
![]() |
(3)終極技破解ROOT密碼:
上面介紹的兩個辦法雖然有效但是第一個遇到數(shù)據(jù)庫關(guān)聯(lián)時無法起作用,而第二個方法還需要我們安裝編輯器軟件比較麻煩,下面我們來看看筆者百試不爽的終極技巧破解ROOT管理密碼。
第一步:以管理員的身份登錄到windows系統(tǒng)后我們通過記事本新建立一個文本文件,將這個文本文件起一個名字叫pwdhf.txt,然后輸入一行內(nèi)容——SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');(包括分號)其中的mynewpassword就是我們要修改后的新密碼。(如圖13)
![]() |
第二步:通過輸入CMD回車打開一個控制臺窗口進(jìn)入命令提示窗口,假設(shè)我們的MySQL主目錄是C:/mysql/bin,那么直接運(yùn)行c:\mysql\bin\mysqld-nt --init-file=c:\mysql\pwdhf.txt后回車即可,這樣我們的MYSQL將自動加載之前建立的TXT文本文件里面的語句,從而實(shí)現(xiàn)了破解MYSQL密碼的目的。當(dāng)然在這之前我們要把pwdhf.txt文件復(fù)制到c:\mysql目錄中才能夠順利加載,否則系統(tǒng)會呈現(xiàn)假死狀態(tài)因?yàn)檎也坏綄?yīng)的TXT文本文件。(如圖14)
![]() |
#p#
第三步:接下來我們通過開始->運(yùn)行->輸入services.msc進(jìn)入服務(wù)配置窗口,找到MYSQL服務(wù),在其上點(diǎn)鼠標(biāo)右鍵選擇停止,然后再重新以正常模式啟動該服務(wù)即可。(如圖15)
![]() |
小提示:
如果是用安裝精靈安裝的MySQL數(shù)據(jù)庫服務(wù)器,則需要通過服務(wù)管理工具來做改動,需要找到并添加默認(rèn)設(shè)置文件,然后運(yùn)行mysqld-nt --defaults-file="path\my.ini" --init-file=c:\mysql\pwdhf.txt來達(dá)到相同的目的。(如圖16)
![]() |
第四步:MYSQL服務(wù)重新啟動后我們就可以嘗試使用新修改設(shè)置的密碼來連接MYSQL數(shù)據(jù)庫控制臺了,輸入的密碼就是pwdhf.txt中password后括號中的內(nèi)容。(如圖17)
![]() |
四,總結(jié):
至此我們就完成了兩個經(jīng)典的MYSQL數(shù)據(jù)庫連接故障的排查任務(wù),要知道企業(yè)數(shù)據(jù)庫密碼特別是ROOT管理員密碼是非常重要的,在實(shí)際使用過程中我們一定要牢記他的信息,如果實(shí)在忘記再用本文介紹的方法來恢復(fù)和修改。另外本文介紹的是在windows系統(tǒng)中恢復(fù)MYSQL數(shù)據(jù)庫帳戶信息的辦法,如果你使用的是Linux或其他系統(tǒng)操作步驟是不同的。比較折中的方法是使用客戶端交互工具mysql來設(shè)置,然后停止mysql服務(wù)并重新以--skip-grand-table --user=root選項(xiàng)來啟動MYSQL服務(wù),通過UPDATE mysql.user SET Password=PASSWORD('softer'),WHERE User='root';FLUSH PRIVILEGES;三條命令來將ROOT密碼恢復(fù)為softer,不過由于大多數(shù)用戶使用的并不是Linux系統(tǒng),所以本方法沒有詳細(xì)介紹,感興趣的讀者可以自行研究,在Windows系統(tǒng)中也可以用此辦法恢復(fù)ROOT密碼。
【編輯推薦】