maven项目springboot连接Mysql5.0报错。

mysql版本:5.0
mysql驱动版本:mysql-connector-java-3.1.10-bin.jar
.yml配置文件中报错:driver-class-name: com.mysql.jdbc.Drive
.xml文中中依赖

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

报错
1.com.mysql.jdbc.Drive被弃用了。Loading class com.mysql.jdbc.Driver. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
2.如下

2023-06-19 21:18:41.248 ERROR 16884 --- [eate-1279556617] com.alibaba.druid.pool.DruidDataSource   : create connection SQLException, url: jdbc:mysql://localhost:3306/reggie?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true, errorCode 0, state 08001

java.sql.SQLNonTransientConnectionException: CLIENT_PLUGIN_AUTH is required
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110) ~[mysql-connector-java-8.0.23.jar:8.0.23]
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.23.jar:8.0.23]
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) ~[mysql-connector-java-8.0.23.jar:8.0.23]
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) ~[mysql-connector-java-8.0.23.jar:8.0.23]
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73) ~[mysql-connector-java-8.0.23.jar:8.0.23]
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:79) ~[mysql-connector-java-8.0.23.jar:8.0.23]
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:833) ~[mysql-connector-java-8.0.23.jar:8.0.23]
    at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:453) ~[mysql-connector-java-8.0.23.jar:8.0.23]
    at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246) ~[mysql-connector-java-8.0.23.jar:8.0.23]
    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) ~[mysql-connector-java-8.0.23.jar:8.0.23]
    at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1644) ~[druid-1.1.23.jar:1.1.23]
    at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1710) ~[druid-1.1.23.jar:1.1.23]
    at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2774) ~[druid-1.1.23.jar:1.1.23]
Caused by: com.mysql.cj.exceptions.UnableToConnectException: CLIENT_PLUGIN_AUTH is required
    at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67) ~[na:na]
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[na:na]
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483) ~[na:na]
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61) ~[mysql-connector-java-8.0.23.jar:8.0.23]
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:85) ~[mysql-connector-java-8.0.23.jar:8.0.23]
    at com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:115) ~[mysql-connector-java-8.0.23.jar:8.0.23]
    at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1350) ~[mysql-connector-java-8.0.23.jar:8.0.23]
    at com.mysql.cj.NativeSession.connect(NativeSession.java:157) ~[mysql-connector-java-8.0.23.jar:8.0.23]
    at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:953) ~[mysql-connector-java-8.0.23.jar:8.0.23]
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:823) ~[mysql-connector-java-8.0.23.jar:8.0.23]
    ... 6 common frames omitted


我觉得你应该写错版本了吧,你实际用的mysql-connector-java 是8.0.10。你的数据库mysql是5.0的,所以你这里用 5.1.47就可以了。

Mysql 版本太低了。换一个。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/388848
  • 这篇博客你也可以参考下:SpringBoot——Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.
  • 除此之外, 这篇博客: Loading class `com.mysql.jdbc.Driver‘. This is deprecated. The new driver class is `com.mysql.cj.jdb中的 总结: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    • com.mysql.jdbc.Driver和mysql-connector-java 5.x一起用。
    • com.mysql.cj.jdbc.Driver和mysql-connector-java 6.x 及以上一起用。
    • 北京时间比UTC快8H。

  • 以下回答来自chatgpt:

    根据问题描述,可以看出是在Maven项目中使用SpringBoot连接MySQL5.0数据库时出现了问题,具体问题在yml配置文件中出现了什么错误,提示中提到com.mysql.jdbc.Driver被弃用,新的驱动类为com.mysql.cj.jdbc.Driver。

    针对该问题,可以按照以下步骤解决:

    1. 修改Maven依赖版本: 根据参考资料中的段落2和段落3,可以通过修改Maven的依赖版本来解决该问题。具体操作为在pom文件中将mysql-connector-java的版本修改为5.1.38或8.0.18即可。

    2. 创建lib目录并在其中添加jar包: 根据参考资料中的段落4和段落5,可以在项目中创建一个lib目录,并将mysql-connector-java-8.0.29.jar包放置到该目录下。同时,还需要下载jarjar-1.4.jar工具,将该工具也放置到lib目录中。在lib目录下执行以下命令即可:

    java -jar .\jarjar-1.4.jar process .\rule.txt .\mysql-connector-java-8.0.29.jar mysql-connector-java-demo-8.0.29.jar
    

    其中,rule.txt文件是根据mysql-connector-java-8.0.29.jar包中的包名编写的规则文件。执行以上命令后,会生成一个mysql-connector-java-demo-8.0.29.jar包。需要在项目中将该包作为依赖,才能正常连接数据库。

    1. 修改yml文件: 根据以上步骤,已经成功添加了mysql-connector-java的依赖并生成了一个新的jar包。接下来需要在yml配置文件中将驱动类修改为新的驱动类。具体修改如下:
    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://host:port/database?useSSL=false&useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
        username: root
        password: root
    

    其中,driver-class-name需要修改为新的驱动类。其他配置根据实际情况进行修改。

    1. 测试代码: 根据参考资料中的段落6和段落7,添加一个测试类可以验证修改是否生效,具体代码如下:
    public class Test {
      private static String jdbc = "com.mysql.jdbc.Driver";
      private static String jdbc8 = "com.mysql.cj.jdbc.Driver";
    
      public static void main(String[] args) {
        try {
          Class<?> aClass = Class.forName(jdbc);
          String name = aClass.getName();
          System.out.println("jdbc5.1.24. ->" + name);
    
          Class<?> aClass1 = Class.forName(jdbc8);
          String name1 = aClass1.getName();
          System.out.println("jdbc8.0.29 ->" + name1);
          System.out.println("能够正常加载驱动");
        } catch (ClassNotFoundException e) {
          e.printStackTrace();
        }
      }
    }
    

    执行以上代码可以验证是否能够正常加载驱动。

    以上就是解决该问题的一些具体步骤,希望能对您有所帮助。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^