现象:用navicat连接MySQL8+时会出现2059错误
原因:这是由于在mysql8之前的版本中加密规则为mysql_native_password,而mysql8以后版本的MySQL使用的是caching_sha2_password验证方式,但此时的navicat还没有支持这种验证方式。
解决方法:一种是更新navicat驱动来解决此问题,一种是将mysql用户登录的加密规则修改为mysql_native_password。本文采用第二种方式。
解决过程:
- 在命令行中登录数据库时不会出现2059错误,所以在命令行中登录数据库,
- 执行下面的命令。 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
- 刷新权限。 FLUSH PRIVILEGES;
- 问题解决。
注意:'root'可以改为你自己定义的用户名,'localhost'指的是该用户开放的IP,可以是'localhost'(仅本机访问,相当于127.0.0.1),可以是具体的'*.*.*.*'(具体某一IP),也可以时'%'(所有IP均可访问,一般修改为%)。'password'是你想使用的验证密码。需要根据实际情况替换成自己的实际配置。