无法使用suncertpathbuilderexception连接到mysql数据库

oknwwptz  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(221)

我正在尝试连接到mysql数据库:

static final String URL="jdbc:mysql://localhost:3306/demo_hotels?useSSL=true&autoReconnect=true&serverTimezone=UTC";
       static final String USERNAME="demo";
       static final String PASSWORD="demo";

        public static void main(String[] args) {
         try {
          DriverManager.registerDriver(new FabricMySQLDriver());
          connection=DriverManager.getConnection(URL, USERNAME, PASSWORD);

          Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new
                JdbcConnection(connection));
          Liquibase liquibase = new liquibase.Liquibase("db/db.changelog.xml",
                new ClassLoaderResourceAccessor(), database);

          liquibase.update(new Contexts(), new LabelExpression());
          database.close();

         } catch (SQLException | LiquibaseException e) {
          e.printStackTrace();
         }

这是有效的。但现在我试图在另一台机器上执行此代码,但它不起作用:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
   at com.pazukdev.auxiliary_services.DBService.main(DBService.java:69)
    Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed:
   at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:392)

为什么它停止工作了?
旧机:java版本1.8.0_,windows 7,mysql server 5.7.21
新机器:java版本1.8.0_,windows 10,mysql server 8.0.11
我发现了一些关于这种例外的信息。看起来我有一些带有ssl证书的三元组:在java客户机中接受服务器的自签名ssl证书
但是trustmanager的选项2不起作用-我也有同样的例外。我试着输入cmd:

<JAVA_HOME>\bin\keytool -import -v -trustcacerts
-alias server-alias -file server.cer
-keystore cacerts.jks -keypass changeit
-storepass changeit

但我也没有这个选项1的恩尼效应。
也许我做错了什么。。

3j86kqsm

3j86kqsm1#

我有一个全球性的问题,数据库和连接到它。这是因为我现在安装了所有mysql的最新版本。在我的旧机器上,我有旧版本的软件。所以,我甚至有一些例外尝试在新软件中执行一些旧的mysql查询。
我安装的mysql服务器和connector/odbc的版本与我在旧机器上安装的版本相同(分别为5.7.21和5.3.10),连接工作正常。

db2dz4w8

db2dz4w82#

我不是java开发人员,但我有一些疑问。
你真的需要 ?useSSL=true 如果你用的是本地数据库?
执行cmd的结果是什么?是否正确导出 server.cer 文件是否与本地主机对应?有必要的钥匙通行证和商店通行证吗?

相关问题