本地windows 修改mysql 的root密碼無效,論 127.0.0.1與 localhost,搞明白所有方式


先說我遇到的問題:

  有個項目中使用了127.0.0.1來連接本地的數據庫,現在要設置本地數據庫的密碼。於是通過cmd 窗口使用命令:

#mysql -uroot -p   // 已經知道原來是不設密碼的,這里可以登錄
mysql>update mysql.user set password=password(‘mypassword’) where user=’root’;
mysql>flush privileges;
mysql>quit;

  密碼修改好了,但項目中使用上面的密碼后還是連接不上。 通過cmd 窗口使用命令 ,使用修改后的密碼倒是可以。

后來弄明白了。

解決:  

MySQL有三種登錄命令:
(1)#mysql -uroot -p  
(2)#mysql -uroot -p  -h localhost    
(3)#mysql -uroot -p  -h 127.0.0.1

  見MySQL的mysql.user 表:

  都是root 用戶,登錄途徑不同,有各自不同的password 。

  既讓明白了原理,這就來修改:

先通過已知方式登錄:
#mysql -uroot -p
修改密碼:
grant all on *.* to root@'%' identified by 'mypassword' with grant option;
grant all on *.* to root@'127.0.0.1' identified by 'mypassword' with grant option;
grant all on *.* to root@'localhost' identified by 'mypassword' with grant option;
flush privileges;

 

補充一:

  這三種路徑不同,深究一下:

  證明了(1)#mysql -uroot -p  與 (2)#mysql -uroot -p -h localhost   是相同的,而與(3)是不同的。

 補充二:

localhost與127.0.0.1的區別是什么?
相信有人會說是本地ip,曾有人說,用127.0.0.1比localhost好,可以減少一次解析。
看來這個問題還有人不清楚,其實這兩者是有區別的。
localhost也叫local ,正確的解釋是:本地服務器
127.0.0.1在windows等系統的正確解釋是:本機地址(本機服務器)
他們的解析通過本機的host文件,windows自動將localhost解析為127.0.0.1
localhot(local)是不經網卡傳輸!這點很重要,它不受網絡防火牆和網卡相關的的限制。
127.0.0.1是通過網卡傳輸,依賴網卡,並受到網絡防火牆和網卡相關的限制。
一般設置程序時本地服務用localhost是最好的,localhost不會解析成ip,也不會占用網卡、網絡資源。
有時候用localhost可以,但用127.0.0.1就不可以的情況就是在於此。猜想localhost訪問時,系統帶的本機當前用戶的權限去訪問,而用ip的時候,等於本機是通過網絡再去訪問本機,可能涉及到網絡用戶的權限。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM