错误休眠无法连接 mysql 数据库

Error hibernate could not connect with mysql database

描述

   basically i want to implement ORM using Hibernate with mysql 8.0.23 CE, for the creation of the 
   table i have configured it in the hibernate config file to be created: 
   but i'm encountered with the problem of "Could not create connection to database server"
   as seen in the photos!

实体

the representation of the table in mysql

     import javax.persistence.Entity;
     import javax.persistence.Id;

     @Entity
     public class User {

         @Id
         private int id;
         private String name;

         public int getId() {
           return id;
         }
         public void setId(int id) {
           this.id = id;
         }
         public String getName() {
           return name;
         }
         public void setName(String name) {
           this.name = name;
         }

     }

休眠配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
   <session-factory>    
      <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
      <property name="hibernate.connection.password">user</property>
      <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/users</property>
      <property name="hibernate.connection.username">user</property>
      <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
      <property name="hbm2ddl.auto">create</property>            
  </session-factory>

控制台日志

   com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:
     at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     atjava.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance
     (NativeConstructorAccessorImpl.java:64)
     at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance
     (DelegatingConstructorAccessorImpl.java:45)
     at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
     at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
     at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
     at com.mysql.jdbc.Util.getInstance(Util.java:387)
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:917)
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:896)
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:885)
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)
     at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2332)
     at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2085)
     at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:795)
     at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
     at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance
     (NativeConstructorAccessorImpl.java:64)
     at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance
     (DelegatingConstructorAccessorImpl.java:45)
     at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
     at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
     at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
     at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400)
     at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327)
     at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
     at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:189)
     at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl
     .getConnection
     (DriverManagerConnectionProviderImpl.java:193)
     at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare
     (SuppliedConnectionProviderConnectionHelper.java:51)
     at org.hibernate.tool.hbm2ddl.DatabaseExporter.<init>(DatabaseExporter.java:52)
     at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:367)
     at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:304)
     at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:293)
     at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:487)
     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1746)
     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1784)
     at com.hibernate.Orm.App.main(App.java:16)
     Caused by: java.lang.NullPointerException: 
     Cannot invoke "java.util.Map.get(Object)" because "this.serverVariables" is null
     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)
     at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1215)
     at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2255)
     at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2286)
     ... 23 more
     Mar 31, 2021 1:12:32 AM org.hibernate.tool.hbm2ddl.SchemaExport execute
     INFO: HHH000230: Schema export complete
     Wed Mar 31 01:12:32 WEST 2021 WARN: Establishing SSL connection without server's identity 
     verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL 
     connection must be established by default if explicit option isn't set. For compliance with 
     existing applications not using SSL the verifyServerCertificate property is set to 'false'. You 
     need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide 
     truststore for server certificate verification.
     Mar 31, 2021 1:12:32 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
     WARN: SQL Error: 0, SQLState: 08001
     Mar 31, 2021 1:12:32 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
     ERROR: Could not create connection to database server.
     and more...

   basically i want to implement ORM using Hibernate with mysql 8.0.23 CE, for the creation of the 
   table i have configured it in the hibernate config file to be created: 
   but i'm encountered with the problem of "Could not create connection to database server"
   as seen in the photos!

POM

   <project xmlns="http://maven.apache.org/POM/4.0.0" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven- 
       4.0.0.xsd">

     <modelVersion>4.0.0</modelVersion>
     <groupId>com.hibernate</groupId>
     <artifactId>hibernateOrm</artifactId>
     <version>0.0.1-SNAPSHOT</version>

   <dependencies>
       <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>3.8.1</version>
         <scope>test</scope>
       </dependency>

      <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.1.6.Final</version>    
      </dependency>

      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>    
      </dependency>  
   </dependencies>

</project>

   basically i want to implement ORM using Hibernate with mysql 8.0.23 CE, for the creation of the 
   table i have configured it in the hibernate config file to be created: 
   but i'm encountered with the problem of "Could not create connection to database server"
   as seen in the photos!

主要

package com.hibernate.Orm;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class App {

  public static void main(String[] args) {
    
    User user = new User();
    user.setId(1);
    user.setName("bruno");
    Configuration config = new 
    Configuration().configure("hibernate.cfg.xml").addAnnotatedClass(User.class);
    SessionFactory sf = config.buildSessionFactory();
    Session session = sf.openSession();
    Transaction tx = session.beginTransaction();
    session.save(user);
    tx.commit();
    session.close();

  }
}

使用的罐子

  [1]: https://i.stack.imgur.com/3CbNu.png

将 java 连接器版本升级到最低 5.1.46 或更高版本,直到最新的 8.0.11,因为旧版本与 MySQL 8.

有问题
<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.46</version>    
      </dependency>