我创建了一个简单的类来测试我使用Mysql Workbench创建的localhost数据库的通信 . Mysql Server正在运行 . JDBC驱动程序已添加到项目的Classpath中 .

public class Database
{
    public static void main(String[] args)
            throws SQLException, ClassNotFoundException
    {
        Connection connection = null;
        String serverName = "localhost:3306";
        String databaseName = "detector_tests";
        String url = "jdbc:mysql://" + serverName + "/" + databaseName
                + "?useSSL=TRUE";

        String username = "simon";
        String password = "password123";
        connection = DriverManager.getConnection(url, username, password);
    }
}

当我运行程序时,我得到以下异常:

线程“main”中的异常com.mysql.cj.jdbc.exceptions.CommunicationsException:通信链接失败成功发送到服务器的最后一个数据包是0毫秒前 . 驱动程序未收到来自服务器的任何数据包 . 在com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:172)在com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64)在com.mysql.cj.jdbc com.mysql.cj.jdbc.ConnectionImpl . (ConnectionImpl.java:444)中的.ConnectionImpl.createNewIO(ConnectionImpl.java:862)位于com的com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230) Database.main上的java.sql.DriverManager.getConnection(未知源)中的.sysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226)位于java.sql.DriverManager.getConnection(未知来源)(Database.java: 17)由以下原因引起:com.mysql.cj.exceptions.CJCommunicationsException:通信链路故障成功发送到服务器的最后一个数据包是0毫秒前 . 驱动程序未收到来自服务器的任何数据包 . 在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)在sun.reflect.NativeConstructorAccessorImpl.newInstance(来源不明)在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(来源不明)在java.lang.reflect.Constructor.newInstance(来源不明)在com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:59)在com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:103)在com.mysql.cj.exceptions.ExceptionFactory.createException (ExceptionFactory.java:149)com的com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:165)com的com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java:355) . mysql.cj.protocol.a.NativeAuthenticationProvider.negotiateSSLConnection(NativeAuthenticationProvider.java:789)在com.mysql.cj.protocol.a.NativeAuthenticationProvider.proceedHandshakeWithPluggableAuthentication(NativeAuthenticationProvider.java:499)在com.m ysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:217)位于com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1411)的com.mysql.cj.NativeSession.connect( NativeSession.java:165)com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:982)com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:852)... 6更多引起by:javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:java.security.cert.CertPathValidatorException:Path不与sun.security.ssl.Alerts.getSSLException(未知来源)中的任何信任锚链接在sun.security.ssl.SSLSocketImpl.fatal(未知来源)sun.security.ssl.Handshaker.fatalSE(未知来源)sun.security.ssl.Handshaker.fatalSE(未知来源)at sun.security.ssl.ClientHandshaker位于sun.security.ssl.Handshaker.processLoop(未知Sou)的sun.security.ssl.ClientHandshaker.processMessage(未知来源)的.serverCertificate(未知来源) rce)at sun.security.ssl.Handshaker.process_record(Unknown Source)at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)at sun.security.ssl .SSLSocketImpl.startHandshake(未知来源)在sun.security.ssl.SSLSocketImpl.startHandshake(未知来源)在com.mysql.cj.protocol.ExportControlled.performTlsHandshake(ExportControlled.java:213)在com.mysql.cj.protocol . StandardSocketFactory.performTlsHandshake(StandardSocketFactory.java:206)在com.mysql.cj.protocol.a.NativeSocketConnection.performTlsHandshake(NativeSocketConnection.java:99)在com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java: 350)... 13更多引起:java.security.cert.CertificateException:java.security.cert.CertPathValidatorException:Path不与com.mysql.cj.protocol.ExportControlled $ X509TrustManagerWrapper.checkServerTrusted中的任何信任锚链接 . (ExportControlled.java:280)在sun.security .ssl.AbstractTrustManagerWrapper.checkServerTrusted(未知来源)... 25更多引起by:java.security.cert.CertPathValidatorException:Path不与sun.security.provider.certpath.PKIXCertPathValidator.certpath.PKIXCertPathValidator.engineValidate(未知)中sun.security.provider.certpath.PKIXCertPathValidator.validate(未知来源)的任何信任锚链接 . 来自)com.mysql.cj.protocol.ExportControlled的java.security.cert.CertPathValidator.validate(未知来源)$ X509TrustManagerWrapper.checkServerTrusted(ExportControlled.java:273)... 26更多

看来我需要添加某种证书或其他东西 . 我不确定,因为我对数据库很新 . 任何具有相同经验或解决方案的人?如果您需要更多信息,我很乐意编辑帖子 .

提前致谢!