MySQL改密碼報錯:ERROR 1045: Access denied for user: ‘root@localhost’ (Using password: YES)

來源:互聯網
上載者:User

   明天去面試,今晚想看看Mysql的一些指令,雖然之前一直在用Mysql,但是感覺都是在做一些簡單的操作。結果剛開始搗騰Mysql就吃了閉門羹,我之前一直用的>mysql -uroot -p。Enter Password:123456去連結Mysql資料庫的,也從來沒有修改過密碼,結果當我用>mysqladmin
-uroot -p123456 password abc123;指令把密碼改為“abc123”再重新串連資料庫的時候竟然一直在報:Access denied for user
'root'@'localhost' (using password:YES) 這個錯。

上網找了很多資料,知道大概是因為沒有給root設定許可權的原因,方法終於是找到一種了。不過比較麻煩,但是也沒有辦法了,不弄好我的Mysql資料庫就用不了,很多開發的應用都是連的Mysql資料庫。

大概的步驟如下:

第一步:以系統管理員身份登入到系統; 

第二步:如果MySQL伺服器正在運行,停止它。 方法有兩個,1:開始菜單->控制台->管理工具->服務,找到Mysql服務停掉。2:右擊我的電腦->管理->服務與應用->服務,找到mysql服務停掉。3:Ctrl+Alt+Delete->啟動服務管理員->服務,找到mysql服務停掉。(這一步這麼簡單,我寫的太詳細,不應該不應該啊!浪費電平啊!)

第三步:選擇一個硬碟最外面建立一個txt檔案,為什麼呢?因為這個txt只是輔佐你解決掉這個錯誤,解決掉錯誤它的光榮任務就完成了,就可以壯烈犧牲了,不要感到可惜,它沒有生命的。比如放在:C:\mysql-init.txt。(這個txt最好還是取這個名字,不要個人化,其他不知道行不行,我也沒有實驗過,這個名字正好是Mysql的進程名字,不要問為什麼是這個名字,電腦這東西在中國是不能問為什麼的,知道是這樣就行了。)在裡面輸入一句話:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456'); 

後面的那串數字是我重新設定的密碼,因為我MyEclipse的項目裡面預設的都是這個密碼,你們改回自己想要的密碼就行了。

第四步:進入DOS命令提示:開始菜單->運行->
cmd ,然後cd到你安裝Mysql的目錄下,當然我的Mysql埋的比較比較深,C:\Program Files\MySQL\MySQL Server 5.0\bin>。如果你將MySQL安裝到了另一位置,請對下述命令進行相應的調整。 在DOS命令提示字元下,執行命令: 
C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqld-nt --init-file=C:\mysql-init.txt 。

第五步:啟動服務,步驟和第二步一樣。在伺服器啟動時,執行由“--init-file”選項(作用:在啟動時從指定的檔案中讀取SQL命令)命名的檔案的內容,更改根使用者密碼。當伺服器成功啟動後,應刪除C:\mysql-init.txt。這個時候這個txt的任務完成了。如果起動MySQL伺服器出錯,把進程mysqld-nt.exe關閉(第二步的第三種方法可以找到進程關掉)。然後重啟它,OK。

最後就可以用你在第三步設定的密碼>mysql
-uroot -p 去連結Mysql資料庫了。

但是你會問難道我每次改密碼都要弄出這個錯來,還要犧牲一個txt才能改密碼成功嗎?就沒有一條指令搞定改密碼這種簡單的事情,當然不是啦。具體方法就是你用這條指令>mysqladmin
-uroot -p123456 password abc123;改密碼的時候,要用這個指令>mysql -uroot
-p123456登入,而不是換行輸進密碼,登入之後再在mysql>操作符後面加上一句給許可權的語句(很多資料並沒有表述明白下面這條指令什麼什麼時候輸入,搞得很多人以為是在改完密碼過後立刻輸入,就會有報錯聲音): 
grant all on mysql.* to 'root'@'localhost' identified by 'password'; 
最後那個password即是你要修改的root使用者的密碼 。我這裡是“123456”這個時候下次登入才可以用>mysql
-uroot -p。Enter Password:123456登入資料庫。


其實以上都是廢話來,如果你想改密碼,直接用原來的密碼登入過後,用下面任何一條指令都可以改密碼,但是要重複運行同一條指令兩次,第一次我把它當作改密碼,第二次當作授予許可權,這樣一點事都沒有,你可以這樣子>mysql
-uroot -p123456登入,還可以這樣子>mysql -uroot -p。Enter
Password:123456登入。其中newpassword就是新密碼。

grant
all on mydb.* to NewUserName@HostName identified by "newpassword" ;
grant usage on *.* to NewUserName@HostName identified by "newpassword";
grant select,insert,update on mydb.* to NewUserName@HostName identified by "newpassword";
grant update,delete on mydb.TestTable to NewUserName@HostName identified by "newpassword";

即是:

grant all onmysql.*
to  'root'@'localhost' identified by "newpassword" ;
grant usage on *.* to  'root'@'localhost' identified by "newpassword";
grant select,insert,update on mydb.* to  'root'@'localhost' identified by "newpassword";
grant update,delete on mydb.TestTable to  'root'@'localhost' identified by "newpassword";

如果是自己電腦多點嘗試,總會發現有辦法的,公司的電腦就不要試啦,搞壞資料庫。有錯請指正。哈哈!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.