客户端连接报错
这个问题是因为用户在数据库服务器中的mysql数据库中的user的表中没有权限。

解决步骤
1、连接服务器: mysql -u root -p

2、看当前所有数据库:show databases;

3、进入mysql数据库:use mysql;

4、查看mysql数据库中所有的表:show tables;

5、查看user表中的数据:select Host, User,Password from user;

上面localhost表示只允许本地连接,不能远程连接
6、修改user表中的Host
%表示开启远程连接
update user set Host='%' where User='root' and Host="localhost";


上面这样改了后,会导致xshell连接看不到所有的数据库(xshell连接表示本地连接),localhost才表示本地连接(注意:上面localhost没有设置密码,所以本地连接,就不用密码;navicat表示远程连接,需要密码),参考:https://www.cnblogs.com/UncleYong/p/10931195.html
7、最后刷新一下:flush privileges;

8、重新在Navicate中测试一下:

至此,问题解决。