天天看點

mac 使用brew安裝的mysql無法用navicat進行連接配接

navicat報錯資訊:

2059 - Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(../Frameworks/caching_sha2_password.so, 2): image not found

原因:密碼加密方式【caching_sha2_password】,用戶端不支援。

解決辦法:

登入mysql

mysql -u root -p
           

使用資料庫mysql

use mysql
           

檢視使用者加密方式

select user, host, plugin, authentication_string from user;
           

看一看root密碼的加密方式,如果是caching_sha2_password的話,navicat就無法連接配接,因為用戶端找不到 caching_sha2_password 插件。

mac 使用brew安裝的mysql無法用navicat進行連接配接

使用以下指令即可:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'; 
           

在用這個指令時可能會出錯:

ERROR 1819 (HY000): Your password does not satisfy the current policy requiremen

原因是MySQL5.6.6版本之後增加了密碼強度驗證插件validate_password,相關參數設定的較為嚴格。使用了該插件會檢查設定的密碼是否符合目前設定的強度規則,若不滿足則拒絕設定。

解決辦法:

1.檢視mysql全局參數配置

SHOW VARIABLES LIKE 'validate_password%';
           
mac 使用brew安裝的mysql無法用navicat進行連接配接

2.參數解釋

validate_password_dictionary_file

插件用于驗證密碼強度的字典檔案路徑。

validate_password_length

密碼最小長度,參數預設為8,它有最小值的限制,最小值為:validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)

validate_password_mixed_case_count

密碼至少要包含的小寫字母個數和大寫字母個數。

validate_password_number_count

密碼至少要包含的數字個數。

validate_password_policy

密碼強度檢查等級,0/LOW、1/MEDIUM、2/STRONG。有以下取值:

Policy                 Tests Performed                                                                                                        

0 or LOW               Length                                                                                                                      

1 or MEDIUM         Length; numeric, lowercase/uppercase, and special characters                             

2 or STRONG        Length; numeric, lowercase/uppercase, and special characters; dictionary file      

預設是1,即MEDIUM,是以剛開始設定的密碼必須符合長度,且必須含有數字,小寫或大寫字母,特殊字元。

validate_password_special_char_count

密碼至少要包含的特殊字元數。

mysql> set global validate_password.mixed_case_count=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password.number_count=0;
Query OK, 0 rows affected (0.03 sec)

mysql> set global validate_password.length=4;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password.policy=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password.special_char_count=0;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
           
mac 使用brew安裝的mysql無法用navicat進行連接配接

然後再試:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY "root";
           

OK

參考連結:https://binary-space.iteye.com/blog/2412769

參考連結:https://blog.csdn.net/u014236541/article/details/78244601

繼續閱讀