使用jdbc连接mysql数据库异常“Client does not support authentication protocol requested by”

pgrightwu 2020-04-03 04:32:18
连接信息:
异常:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support authentication protocol requested by server; consider upgrading MySQL client
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:935)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4101)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1300)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2337)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2370)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2154)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:270)
at com.wu.jdbc.Update2.update(Update2.java:17)
at com.wu.jdbc.Update2.main(Update2.java:48)
使用的是Navicat对mysql进行可视化操作:
mysql版本:
********************
*General Information
********************
服务器类型: MySQL
连接名: MYSQL
主机名或 IP 地址: localhost
端口: 3307
用户名: root
保存密码: True

********************
*Advanced Information
********************
设置位置: C:\Users\TP007\Documents\Navicat\MySQL\servers\MYSQL
编码: 65001 (UTF-8)
保持连接间隔 (秒): N/A
使用 MySQL 字符集: True
使用压缩: False
自动连接: False
使用高级连接: False

********************
*SSL Information
********************
使用 SSL: False
使用验证: False
客户端密钥:
客户端证书:
CA 证书:

********************
*SSH Information
********************
使用 SSH 通道: False
主机名或 IP 地址:
端口: 22
用户名:
验证方法: 密码
保存密码: False

********************
*HTTP Information
********************
使用 HTTP 通道: False
通道地址:
用 base64 编码传出查询: False
使用密码验证: False
用户名:
保存密码: False
使用证书验证: False
客户端密钥:
客户端证书:
CA 证书:
Use Proxy: False
代理服务器 主机:
代理服务器 端口: 0
代理服务器 用户名:
代理服务器 保存密码: False

********************
*Other Information
********************
服务器版本: 8.0.16
通讯协定: 10
信息: localhost via TCP/IP
驱动也是这个版本的,上一秒还用idea创建数据库里的student表,下一秒新建一个class添加数据就不行了!
报错信息是客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端,这怎么搞?


...全文
3193 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pgrightwu 2020-04-03
  • 打赏
  • 举报
回复
问题解决!真他喵丢人!getConnection后面的参数只写了URL没写用户名和密码!是真的蠢!!
pgrightwu 2020-04-03
  • 打赏
  • 举报
回复
引用 1 楼 浪费七年时间的回复:
这异常连解决办法都告诉你了,换版本更新的mysql jdbc,服务器版本是8.0.16,JDBC也用相同版本。 异常类是com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException,这是5.x版本才有的异常类,8.0没有,还说驱动是最新版本。。。 MySQL 8.0 JDBC参考文档
之前是因为驱动问题 ,更新了驱动之后出现了新的异常java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO)
pgrightwu 2020-04-03
  • 打赏
  • 举报
回复
引用 1 楼 浪费七年时间的回复:
这异常连解决办法都告诉你了,换版本更新的mysql jdbc,服务器版本是8.0.16,JDBC也用相同版本。 异常类是com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException,这是5.x版本才有的异常类,8.0没有,还说驱动是最新版本。。。 MySQL 8.0 JDBC参考文档
正解!之前是驱动没有mark as libraries导致的异常,用的还是老的驱动板本,不过换了驱动也出现了新问题
浪费七年时间 2020-04-03
  • 打赏
  • 举报
回复
这异常连解决办法都告诉你了,换版本更新的mysql jdbc,服务器版本是8.0.16,JDBC也用相同版本。 异常类是com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException,这是5.x版本才有的异常类,8.0没有,还说驱动是最新版本。。。 MySQL 8.0 JDBC参考文档

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧