sqlstudio连接MySQL数据库报错public key is not allowed

发布时间 2023-11-30 10:47:30作者: 往事已成昨天

jdbc:mysql://192.168.8.200:3306/company?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true

 

 

 

在MySQL 5.7中,默认的身份验证插件还是为 mysql_native_password。
在MySQL 8.0中,caching_sha2_password是默认的身份验证插件,而不是 mysql_native_password。
因为caching_sha2_password是MySQL 8.0中的默认身份验证插件,并且提供了该sha256_password身份验证插件的功能的超集 ,使用sha256_password验证的MySQL帐户应改为使用caching_sha2_password 。
为了使MySQL 5.7客户端能够使用通过caching_sha2_password身份验证的帐户连接到8.0及更高版本的服务器 ,MySQL 5.7客户端库和客户端程序均支持 caching_sha2_password客户端身份验证插件。尽管默认身份验证插件有所不同,但与MySQL 8.0和更高版本的服务器相比,这提高了MySQL 5.7客户端连接功能的兼容性。

MySQL 8.0 配置mysql_native_password身份验证插件的密码

mysql8.0的默认密码验证不再是password。所以在创建用户时,create user 'username'@'%' identified by 'password'; 客户端是无法连接服务的。

 

方法一:

登录MySQL后输入:

ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

FLUSH PRIVILEGES;

 

方法二:

编辑my.cnf文件,更改默认的身份认证插件。比如说:

vim /data/mysql/mysql_3306/my_3306.cnf

# 在[mysqld]中添加下边的代码
default_authentication_plugin=mysql_native_password

这个需要重启服务才生效。

 

复制代码
mysql> select user,host,plugin from mysql.user;        
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| bak              | %         | mysql_native_password |
| monitor          | %         | mysql_native_password |
| repuser          | %         | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| repuser          | localhost | caching_sha2_password |
| root             | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
8 rows in set (0.00 sec)
 

update mysql.user set host='%' where user = 'root';

 测试成功::!!