新的MySQL驱动程序导致java.sql.SQLNonTransientConnectionException:需要CLIENT_PLUGIN_AUTH

时间:2016-05-20 13:56:06

标签: java mysql ssl jdbc

如果将MySQL JDBC驱动程序从5.1.38更改为6.0.2,我会收到以下异常

java.sql.SQLNonTransientConnectionException: CLIENT_PLUGIN_AUTH is required

此异常发生在正常的JDBC启动中。

可能这与SSL有关,因为我也收到以下消息

  

在没有服务器身份验证的情况下建立SSL连接   不建议。根据MySQL 5.5.45 +,5.6.26 +和5.7.6+   要求如果显式,则必须默认建立SSL连接   选项未设置。符合不使用的现有应用程序   SSL将verifyServerCertificate属性设置为“false”。你需要   通过设置useSSL = false或设置来显式禁用SSL   useSSL = true并为服务器证书提供信任库   验证

以前版本中没有。

6 个答案:

答案 0 :(得分:9)

这听起来像是回归。是否有特殊原因要切换到6.0.2?如果没有,我将恢复到5.1.38并在三个月之后给6.x一次让MySQL的人们稳定驱动程序。

答案 1 :(得分:2)

    Use Maven depandency 
###pom.xml  
           <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.37</version>
            </dependency>

##application.properties

server.port=9092
jwt.secret=javainuse
spring.datasource.url=jdbc:mysql://localhost:3306/hospital
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name= com.mysql.jdbc.Driver
spring.datasource.platform=mysql
#spring.jpa.hibernate.ddl-auto=create-drop

spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.ddl-auto= update

#spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQL5InnoDBDialect

答案 2 :(得分:1)

我遇到了同样的问题,我通过将父标记版本从2.1.1.RELEASE更改为2.0.0.RELEASE来解决了

来自

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

答案 3 :(得分:1)

mysql连接器 (从6开始)的新版本似乎与 DBMS mysql 的旧版本不兼容(低于5.6) 。因此,为了解决您的问题,如果您更新了 mysql连接器,请尝试对DBMS进行相同的操作。  实际上,我使用 mysql连接器8.0.13 DBMS msql 5.1 .... 拥有相同的issu,我通过将 DBMS移至5.6.17 < / em>

答案 4 :(得分:1)

可能是由于mysql版本太旧,所以在这种情况下需要进行3处更改: 在application.properties中进行前两项更改:

  1. spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

  2. spring.datasource.driver-class-name=com.mysql.jdbc.Driver

  3. 根据mysql-connector-java的替换范围标记对pom.xml文件进行更改,将scope标记替换为version标记,并在version中编写您的mysql版本,如5.1

答案 5 :(得分:0)

我通过删除pom中的mysql版本来解决此问题。

<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>       
</dependency>