--- 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';
完結。