新的MySQL驱动程序导致java.sql.SQLNonTransientConnectionException:需要客户端\插件\身份验证

新的MySQL驱动程序导致java.sql.SQLNonTransientConnectionException:需要客户端\插件\身份验证,java,mysql,ssl,jdbc,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连接 选项未设置。以符合不使用 S

如果将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.2有什么特别的原因吗?如果没有,我会回到5.1.38,在三个月后给6.x一次机会,让MySQL的人稳定驱动程序

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


org.springframework.boot
spring启动程序父级
2.1.1.1发布


org.springframework.boot
spring启动程序父级
2.0.0.1版本

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

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

mysql
mysql连接器java

新版本的mysql连接器(从6开始)似乎与旧版本的DBMS mysql(低于5.6)不兼容。因此,为了解决您的问题,如果您更新了mysql连接器,请尝试对DBMS进行同样的
实际上,我在mysql connector 8.0.13和DBMS msql 5.1中也遇到了同样的问题。。。。我通过将DBMS移到5.6.17解决了这个问题,这可能是因为mysql版本太旧,所以在这种情况下需要做3个更改: 在application.properties中,执行前2项更改:

  • spring.jpa.properties.hibernate.dialogue=org.hibernate.dialogue.mysql5dialogue

  • spring.datasource.driver类名=com.mysql.jdbc.driver

  • 在mysql连接器java的依赖关系中,pom.xml文件中的更改是否将scope标记替换为version标记,并在version中像5.1一样编写mysql版本

  • 使用Maven depandency
    ###pom.xml
    mysql
    mysql连接器java
    5.1.37
    ##应用程序属性
    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类名=com.mysql.jdbc.driver
    spring.datasource.platform=mysql
    #spring.jpa.hibernate.ddl auto=createdrop
    spring.jpa.properties.hibernate.dialogue=org.hibernate.dialogue.mysql5innodbdialogue
    spring.jpa.hibernate.ddl auto=update
    #spring.jpa.properties.hibernate.dialogue=org.hibernate.dialogue.mysql5innodbdialogue
    
    这为我解决了这个问题。原因是驱动程序的版本与安装的MySQL版本不兼容。如果使用springboot,可能需要将mysql驱动程序的版本更改为可与mysql DBMS进行比较的版本。请检查@P Satish Patro对此帖子的回答
    <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.0.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
    <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>       
    </dependency>   
    
        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