sqlstudio连接MySQL数据库报错public key is not allowed
Navicat中mysql的控制台打开:快捷键按F6
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';
测试成功::!!