mysql8 客户端连接失败

使用navicat连接最新的mysql8数据库,报错如下

1251 Client does not support authentication protocol requested by server; consider upgrading MySQL client

这个错误并不是由于你设置的密码强度不够引起的,因此你无论设置成多么复杂的密码都解决不了这个问题

错误原因

不同于以往版本,mysql8对root账号密码配置默认使用caching_sha2_password插件

运行以下命令查看

mysql>use mysql; 
mysql>select user, host, plugin, authentication_string from user\G; 

mysql8 客户端连接失败_第1张图片

Host列指定了允许用户登录所使用的IP,比如User=root Host=192.168.1.100。这里的意思就是说root用户只能通过192.168.1.100的客户端去访问

%是个通配符,如果Host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连接。
如果Host=%,表示所有IP都有连接权限

为了方便,很多人在开启远程连接的时候,都直接把Host改成%

同样的密码12345678生成的密文string,第一行是sha2加密的结果,第五行是native加密(之前一直采用的方式)的结果

服务器命令行使用的是host=localhost AND user=root,远程连接使用host=% AND user=root

解决方法

alter user '用户名'@'%' IDENTIFIED WITH mysql_native_password by '你的密码';

另外一种永久解决的方法

vim my.cnf

[mysqld]
default_authentication_plugin=mysql_native_password

但是,这个参数只对新授权的用户生效,旧的root密码还是用旧的方式

你可能感兴趣的:(mysql)