MySQL8.0數據庫鏈接驅動問題

在新電腦上安裝了MySQL8.0,打開原來的一個項目去鏈接時,報以下錯誤java

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.mysql

Caused by: java.lang.NullPointerException
    at com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:3005)
    at com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1916)
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1845)spring

 

經排查,是由於JDBC驅動版本問題致使的,項目原來使用的MySQL版本是5.X,如今使用MySQL8.0,驅動須要相應的跟新,以下:sql

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <!--<scope>runtime</scope>-->
            <version>8.0.11</version>
</dependency>

另外,application.properties文件中的數據庫配置項也須要相應變化:數據庫

spring.datasource.url=jdbc:mysql://localhost:3306/toutiao?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=789456123
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

url 須要添加時區設置:安全

&serverTimezone=GMT%2B8   表明東八區)
也可設置爲:serverTimezone=UTC serverTimezone=Shanghai(會比中國時間早8個小時,若是在中國,能夠選擇Asia/Shanghai或者Asia/Hongkong)

(GMT%2B8
若是mysql-connector-java用的6.0以上的

若是MySQL-connector-java用的6.0以上的,則driver要使用:服務器

com.mysql.cj.jdbc.Driver

 

若是未明確設置,MySQL 5.5.45+, 5.6.26+ and 5.7.6+版本默認要求創建SSL鏈接。
爲了符合當前不使用SSL鏈接的應用程序,verifyServerCertificate屬性設置爲’false’。
若是你不須要使用SSL鏈接,你須要經過設置useSSL=false來顯式禁用SSL鏈接。
若是你須要用SSL鏈接,就要爲服務器證書驗證提供信任庫,並設置useSSL=trueapp

SSL – Secure Sockets Layer(安全套接層)url

相關文章
相關標籤/搜索