連接資訊:

例外: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客戶端,這怎么搞?
uj5u.com熱心網友回復:
這例外連解決辦法都告訴你了,換版本更新的mysql jdbc,服務器版本是8.0.16,JDBC也用相同版本。例外類是com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException,這是5.x版本才有的例外類,8.0沒有,還說驅動是最新版本。。。
MySQL 8.0 JDBC參考檔案
uj5u.com熱心網友回復:
正解!之前是驅動沒有mark as libraries導致的例外,用的還是老的驅動板本,不過換了驅動也出現了新問題
uj5u.com熱心網友回復:
之前是因為驅動問題 ,更新了驅動之后出現了新的例外java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO)
uj5u.com熱心網友回復:
問題解決!真他喵丟人!getConnection后面的引數只寫了URL沒寫用戶名和密碼!是真的蠢!!轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/100470.html
標籤:Java SE
