安裝 mysql 8.0后;root用戶在客戶端連接不上


--- mysql workbench 
Failed to Connect to MySQL at 10.211.55.6:3306 with user root 
Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): image not found 

--- navcat 
連接失敗 
Client does not support authentication protocol requested by server; consider upgrading MySQL client 

原因:密碼加密方式【caching_sha2_password】,客戶端不支持。 
在數據庫服務器上登錄: 
mysql>use mysql; 
mysql>select user, host, plugin, authentication_string from user\G; 
*************************** 2. row *************************** 
                 user: root 
                 host: % 
               plugin: caching_sha2_password 
authentication_string: $A$005$XN:@GbgA#f7W+*'3rfILovff0TIgd2lrblzTBREzWsJSvRFNwV0Eu/C/XX9 

果然 root 的密碼是用 caching_sha2_password 插件加密的。而客戶端找不到 caching_sha2_password 插件,於是登錄不上。我第一反應是給客戶端安裝相應插件,然而看了官文檔:

 

 

 巴啦巴啦巴啦。。。 sha2_cache_cleaner, likecaching_sha2_password,插件是內置的,不需要安裝。 
好吧,我更新為最新的 mysql workbench【6.3.9 -> 6.3.10】 
一鏈接,咣當,還是原來的錯誤。看來 6.3.10的 mysql workbench也沒有打包相關插件。 
於是我只好在服務端修改用戶密碼的加方式,看官方文檔,需要用 mysql_native_password 加密。 
我是用創建新用戶來測試此方式是否可行的: 
mysql>CREATE USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY 'test'; 
mysql>CREATE USER 'test1'@'%' IDENTIFIED BY 'test1'; 
在服務器啟動配置中不設置 default-auth=mysql_native_password 的情況下用上面兩行創建的用戶 
都是 mysql_native_password 加密的,原來服務器默認是用 mysql_native_password 加密的; 
用上面用戶在客戶端連接,終於OK了; 
那第問題來了,既然默認是用 mysql_native_password 加密的,為什么我的 root  的用戶密碼是用 caching_sha2_password 加密的? 
我回憶在安裝好mysql 后,首次登錄修改密碼時,我用的命令是: 
mysql>set password for 'root'@'%' = password('root'); 
於我嘗試用戶這行命令去修改我新添加的用戶: 
mysql>set password for 'test1'@'%' = password('test1'); 
一查詢,心中萬只特殊小動物奔過: 
*************************** 5. row *************************** 
                 user: test1 
                 host: % 
               plugin: mysql_native_password 
authentication_string: *06C0BF5B64ECE2F648B5F048A71903906BA08E5C 
於是我猜測,root用戶 在安裝數據庫是,指定的加密插件是:caching_sha2_password,應該是我的安裝沒修改安裝配置文件。 
於是我要修改root用戶的加密插件,因為用新添加的用戶需要去授權,請原諒我的懶,一個牛B的前輩說過,不懶的程序員都不是一個好的程序員。 
修改 root 用戶密碼: 
mysql>ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root'; 

完結。


免責聲明!

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



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