我在windows下安裝了mysql,但是不用密碼就能登進去,而root明明是有密碼的,我用select user()指令檢視目前登入使用者是root。
網上搜了很多資料,大多數是教的怎麼在linux下解決這個問題。
我綜合了大多數的方法,自以為找到了解決的辦法:
1.首先,網上的資料都提到了需要關閉mysqld這個服務來屏蔽權限檢查,我檢視了任務管理器,發現的确有一個叫mysqld.exe的程式在運作:
我直接關閉這個程序。
我查閱了幫助手冊,”MySQL伺服器也就是mysqld,是在MySQL安裝中負責大部分工作的主程式。伺服器随附了幾個相關腳本,當你安裝MySQL時它們可以執行設定操作,或者是幫助你啟動和停止伺服器的幫助程式。“ 我估計它相當于mysql的守護程序,不停止它就無法設定啟動腳本。
2.網上都提到了
mysqld-nt --skip-grant-tables
mysqld_safe --skip-grant-tables
safe_mysqld --skip-grant-tables 等關閉權限檢查的方法,但是我在CMD指令提示符下輸入都提示:“mysqld_safe”不是内部或外部指令,也不是可運作的程式或批處理檔案。
于是我檢視mysql安裝目錄下的bin檔案夾裡有哪些相關的檔案:
(1)mysqld.exe (2)mysqld_multi.pl
我檢視了幫助手冊,“在Unix和NetWare中推薦使用mysqld_safe來啟動mysqld伺服器。mysqld_safe增加了一些安全特性,例如當出現錯誤時重新開機伺服器并向錯誤日志檔案寫入運作時間資訊。為了保持同舊版本MySQL的向後相容性,MySQL二進制分發版仍然包括safe_mysqld作為mysqld_safe的符号連結。預設情況下,mysqld_safe嘗試啟動可執行mysqld-max(如果存在),否則啟動mysqld。”
我估計mysqld_safe是mysqld.exe檔案裡的一個啟動選項。是以我嘗試了這樣輸入:
先跳轉到mysql的bin目錄下,再輸入mysqld --skip-grant-tables。這時候有可能一直沒有反應的樣子,不會生成新的一行輸入。
實際上它已經停止了權限檢查,我們可以進行其他操作了。
3.重新打開一個cmd指令提示符視窗,進入到mysql裡面,然後輸入use mysql,就會發現成功了!:
看到沒?上面最後一行提示的是Database changed!!
如果你輸入show tables就會看到這個資料庫下有個表叫user,記錄了登陸的賬戶名和密碼。
是以你可以這樣修改root賬戶的密碼:
UPDATE user SET Password=PASSWORD('123') WHERE user='root';
這時你使用MySql Command Line Client登陸的話,就會要求輸入密碼123了!你已經不是匿名登陸,是以可以進行各種操作了!!!