mac 使用brew安装的mysql无法用navicat进行连接

版权声明:MZ21G https://blog.csdn.net/qq_35793285/article/details/91128018

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 插件。

使用以下命令即可:

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%';

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)

然后再试:

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

猜你喜欢

转载自blog.csdn.net/qq_35793285/article/details/91128018
今日推荐