首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL 8连接报错2059解决办法

导读:MySQL8.0采用了新的SHA-2插件加密方式,导致很多第三方可视化软件和编程语言接口连接错误,解决这个问题只需要还原native方式,对于编程语言还需要修改配置文件my.cnf或my.ini。

图形化管理工具Navicat连接提示: 验证插件[caching_sha2_password]不能被加载

编程语言PHP7连接提示 :客户端不知道服务器要求的验证方法[caching_sha2_password]

①根本原因

我们看看数据用户表user

注意到第4行数据 host='%' AND user ='root',认证方式(plugin)就是caching_sha2_password,远程连接匹配这一行生效。字段authentication_string 存放的是加密后的字符串。

注意:直接Update修改plugin需要同时修改加密字符串(这里不建议这样做)。

远程连接:主机名为任意非localhost的连接,通配符%

本地连接:主机名为localhost或127.0.0.1的连接

②解决办法

方案一:修改认证方式

修改认证方式为mysql_native_password并设置密码为12345678。可能用到的SQL语句:

方案二:新建用户

到这里Navicat就能连接成功了。其他第三方图形管理工具也可以。

然鹅编程语言PHP还是上面的错误,这说明PHP7和Navicat连接方式不一样。

或者说编程语言(不知道Java、Python有待确认)和第三方可视化软件连接MySQL的方式不一样。接着用一个并不存在的用户名userNative111测试连接,也是同样的错误提示缺少sha2,这说明编程语调用时还是caching_sha2_password验证方式。

目前,让PHP连接MySQL8除了账号还要修改配置文件

Linux/windows都是在配置文件中新增

③修改配置文件

Linux系统:

修改MySQL配置文件,位于/etc/my.cnf。完成后重启MySQL服务

Windows系统:

打开MySQL配置文件my.ini(若不存在自己建立),增加一行

测试成功

④总结

MySQL8修改权限立即生效,不需要FLUSH PRIVILEGES(网上还在误传)

当host='localhost',因为具体指明了主机名优先级高于通配符%需要留意组合

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180507G1W6M000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券