MySQL WINDOWS下重置root用戶密碼過程

昨天另外一個項目的小夥伴打來電話,說是他們項目節後準備在MYSQL上作一次數據遷移,打算先在本地WINDOWS上MYSQL測試後,再將整個計劃拿來與老外討論.目前遇到一個很奇葩的事情,原先MYSQL DBA 1個月前離職了,在離職交接中LINUX服務器上的MYSQL文檔都發給項目組了,可是一臺本地WINDOWS上的MYSQL由於不多有人使用,因此該DBA可能遺忘了交接這個MYSQL的文檔.如今小夥伴急着用,因此讓我幫忙重置MYSQL ROOT用戶的密碼. 哥這種半吊子MYSQL DBA也只好趕鴨子上架,在網絡上查詢資料發現方法大同小異, 多數是經過先SKIP GRANT TABLE,而後在另外一DOS下從新登陸MYSQL而後更改權限庫中的ROOT密碼;可是在該機器上測試時發現跳過權限檢查後在另外一個DOS下登陸MYSQL總報錯,通過反覆測試發現下面的處理流程可用:mysql

    1. 先用DOS命令' net stop mysql'關閉MYSQL服務,若是DOS命令不能使用則要先去環境變量中加入相似‘;%SystemRoot%\system32‘這類參數.sql

    2. 在DOS下切換到MYSQL安裝文件的BIN文件夾下,輸入命令'mysqld --skip-grant-tables',注意,輸入此命令後,正常狀況下應爲光標中止於下一行,若是DOS界面有提示信息則按信息提示進行處理.我遇到的狀況是MYSQL安裝文件夾下面DATA文件夾丟失,多是由於誤操做或者MYSQL升級成5.7所致使,因此使用SKIP命令會遇到問題,致使後面登陸MYSQL失敗.第一次發現該問題時,我首先手動分配了一個data的文件夾(手動分配會致使其餘問題,在後面會詳細描述).此時使用SKIP命令正常.數據庫

    3. 這時咱們需新打開一個DOS窗口,由於上一步輸入SKIP命令後光標中止了,咱們新打開DOS窗口,而後切換到MYSQL安裝文件夾BIN目錄下,輸入MYSQL命令訪問MYSQL.此時無需輸入密碼.服務器

    4.登陸MYSQL成功後,咱們輸入'USE MYSQL‘命令訪問系統權限數據庫.注意:在這裏會遇到第二個問題,由於在第二步我第一次處理時選擇手動分配DATA文件夾,因此係統中並無權限數據庫'mysql',有考慮使用5.7以前版本的data文件可是以爲不靠譜,後來搜索資料後發現這種現象大多數是由於MYSQL升級致使的,使用如下命令,系統會自動建立data file及一些缺失的系統數據庫:網絡

    mysqld --initialize-insecure --user=mysql測試

    按照資料說法,初始化以後其實系統會建好默認數據庫後默認將ROOT密碼設置爲空,可是咱們已經到這一步了,仍是繼續嘗試正常的修改ROOT 密碼流程吧.spa

    5. 用常規UPDATE語句去更新MYSQL USER表中ROOT的密碼便可:命令行

   update mysql.user set authentication_string=password('123456') where user='root' and Host ='localhost';code

    注意,MYSQL5.7以後USER 表中PASSWORD字段更改成authentication_string,因此這裏咱們使用authentication_string.ip

    6.更新成功以後是第三個要注意的地方,在MYSQL命令行輸入 ' flush privileges',通知系統權限方面的改變.

    7.最後退出,重啓,發現修改爲功.

相關文章
相關標籤/搜索