Navcat连MySQL提示Autentication错误

背景

Mysql版本:8.0.13

Navicat版本:Navicat Premium Version 12

问题

在MySQL中创建好用户,数据库,并将数据库的权限授权给用户之后

1
2
3
4
5
6
7
8
9
10
11
mysql> create user 'flask'@'%' identified by 'xxxx';
Query OK, 0 rows affected (0.01 sec)

mysql> create database FlaskDB default charset utf8 collate utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on FlaskDB.* to "flask"@"%";
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

然后通过Navicat使用连接数据库,出现了下面的报错:

authentication_error

结论

这个问题百度一下有很多帖子,是由于新版的MySQL8更新了认证方式,而其他的数据库软件没有跟上。大部分忒子会推荐我们重新配置MySQL,不启用新的认证方式,甚至有些建议删了重装。

个人还是推荐下面这种方式:

1
ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

不重新配置MySQL,暂时先指定使用旧版本的认证方式来设置密码。待后续软件更新了自然就可以使用新版本功能了。

https://stackoverflow.com/questions/49194719/authentication-plugin-caching-sha2-password-cannot-be-loaded