使用Navicat远程连接MySQL8.0+版本

Posted Freeguy88

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Navicat远程连接MySQL8.0+版本相关的知识,希望对你有一定的参考价值。

导航

最近忙里偷闲,总结一下mysql8.0+ 版本的一些使用方法,这次主要讲:navicat连接mysql8.0+版本。

Mysql8.0+版本数据库用户加密方式

首先,MySQL8.0+版本默认的身份验证插件改为了caching_sha2_password,之前的版本是mysql_native_password。可以在mysql表中进行验证:

select user,host,plugin from user;

注: 最后一行笔者手动进行了更改。

远程连接

为了更有条理,我这把远程连接过程分成两步。

第一步

由于目前navicat不支持caching_sha2_password插件,所以第一步先将加密方式改为mysql_native_password:

可以这样改:

update user set plugin = 'mysql_native_password' where user = 'root';

也可以这样改:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

这种改法的好处是可以直接将密码也一并改了。

改了加密插件后 就可以用navicat 连接本地的MySQL数据库了, 常见的报错如 下图:

就是因为没有修改插件导致的。如果只需要本地连接MySQL,那到这里就🆗了。

第二步

第一步改了插件,实现了本地连接。第二步需要做的是开放权限。
具体做法 还是操作mysql的user表。

update user set host = '%' where user = 'root';

这样操作的效果是将root身份访问权限完全开放,允许任何ip访问。当然还可以将root用户仅开放给特定的ip,这样则只允许该ip访问 , 具体操作如下:

create user root@127.0.0.1 identified by 'root';
grant all on *.* to root@127.0.0.1 with grant option;

这样就可以只允许127.0.0.1这一个ip使用root登录名root密码去登录远程mysql啦。当然这里的第二行sql是将所有权限都给了出去,也可以只给部分的权限,毕竟不常用,用的时候再查吧,(咋也不是dba啊🤣)

这里再多提一点,可以创建带过期时间的用户,只需要create语句后面稍作修改即可(以下示例创建过期时间为90天的用户):

create user root@127.0.0.1 identified by 'root' password expire interval 90 day;

以上两步做完了,还需要最后刷新一下:

flush privileges;

以上,mysql部分的配置就算完成了,可以试着使用navicat连接一下刚配置好的mysql服务器。如果还是访问不了,则还需要检查mysql所在服务器防火墙是否开放了3306端口的访问权限。至于防火墙的配置,可自行百度,也很简单😏。

相关文章

下面是一些个人觉得有用的博文,供参考:

  1. https://www.cnblogs.com/chenjiye/p/10333258.html
  2. https://blog.csdn.net/qq_36777191/article/details/112548586
  3. https://blog.51cto.com/wangwei007/2139823

以上是关于使用Navicat远程连接MySQL8.0+版本的主要内容,如果未能解决你的问题,请参考以下文章

使用navicat连接mysql8.0.12版本 出现client does not support。。。解决办法

使用Navicat连接MySQL8.0版本报1251错误

mysql8.0,远程连接,navicat创建数据库报错1044-Access denid for user

linux(CentOS7.6)下安装mysql8.0并使用navicat远程访问

Mysql授权允许远程访问解决Navicat for MySQL连接mysql提示客户端不支持服务器请求的身份验证协议;考虑升级MySQL客户端

(转)Navicat连接MySQL8.0亲测有效