Невозможно подключиться к базе данных MySQL с SunCertPathBuilderException - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь подключиться к базе данных 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_112, Windows 7, MySQL Server 5.7.21

Новая машина: Java версии 1.8.0_172, Windows 10, MySQL Server 8.0.11

Я нашел некоторую информацию о подобных исключениях.Похоже, у меня есть несколько триоблей с SSL-сертификатом: Принять самозаверяющий ssl-сертификат сервера в клиенте Java

Но вариант 2 с TrustManager не работает - у меня такое же исключение.Я попытался набрать cmd:

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

Но у меня нет эффекта eny в этом варианте 1.

Возможно, я что-то не так делаю ..

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

У меня была глобальная проблема с базой данных и подключением к ней.Это было вызвано тем, что теперь я установил все компоненты MySQL в его последних версиях.И на моей старой машине у меня есть старые версии этого программного обеспечения.Итак, у меня даже были некоторые исключения при попытке выполнить некоторые из моих старых запросов MySQL в новом программном обеспечении.

Я установил те же версии MySQL Server и Connector / ODBC, что и на старой машине (5.7.21 и 5.3.10 соответственно) и получил соединение работает нормально, как и раньше.

0 голосов
/ 05 июня 2018

Я не Java-разработчик, но у меня есть некоторые сомнения и вопросы здесь.

  1. Вам действительно нужно ?useSSL=true, если вы используете локальную базу данных?
  2. Каковы результаты вашего выполнения cmd?Правильно ли вы экспортировали server.cer файл, соответствующий вашему локальному хосту?С необходимыми клавишами и хранилищами?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...