com.mysql.jdbc.exceptions.jdbc4. CommunicationsException: отказ Коммуникационного канала

Ваша кнопка - #BoxAlertBtnOk появится на веб-странице через мгновение, когда вы позвоните await page.click("#BoxAlertBtnOk");, кнопка станет невидимой. Попробуйте подождать, пока оно не станет видимым, затем выполните действие:

await page.waitForSelector("#BoxAlertBtnOk");
await page.click("#BoxAlertBtnOk");

await page.waitForSelector("input[value='Perito RE / G.F.']");
await page.click("input[value='Perito RE / G.F.']");
198
задан Eric Leschinski 23 October 2014 в 02:32
поделиться

5 ответов

Итак, у вас

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Сбой канала связи
java.net.ConnectException: Connection refused

Я цитирую из этого ответа, который также содержит пошаговое руководство по MySQL+JDBC:

Если вы получаете SQLException: Connection refused или Connection timed out или MySQL specific CommunicationsException: Communications Link failure, то это означает, что БД вообще недоступна. Это может иметь одну или несколько из следующих причин:

  1. IP-адрес или имя хоста в URL JDBC неверны.
  2. Имя хоста в JDBC URL не распознается локальным DNS-сервером.
  3. Отсутствует или неверно указан номер порта в URL JDBC.
  4. Сервер БД не работает.
  5. Сервер БД не принимает TCP/IP-соединения.
  6. Сервер БД исчерпал количество соединений.
  7. Что-то между Java и DB блокирует соединения, например, брандмауэр или прокси.

Чтобы решить ту или иную проблему, следуйте следующим советам:

  1. Проверьте и протестируйте их с помощью ping.
  2. Обновите DNS или используйте IP-адрес в URL JDBC.
  3. Проверьте его на основе my.cnf СУБД MySQL.
  4. Запустите БД.
  5. Проверьте, запущен ли mysqld без опции --skip-networking.
  6. Перезапустите БД и исправьте свой код так, чтобы он закрывал соединения в finally.
  7. Отключите брандмауэр и/или настройте брандмауэр/прокси, чтобы разрешить/перенаправить порт.

См. также:

228
ответ дан 23 November 2019 в 05:12
поделиться

Скачайте MySQL-JDBC-Type-4-Treiber (например, 'mysql-connector-java-5.1.11-bin.jar' из 'mysql-connector-java-5.1.11.zip') на Mysql.

Вам необходимо включить jar драйвера во время компиляции и выполнения в свой classpath.

Class.forName( "com.mysql.jdbc.Driver" ); // do this in init
// edit the jdbc url 
Connection conn = DriverManager.getConnection( "jdbc:mysql://MyDbComputerNameOrIP:3306/myDatabaseName", username, password );
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery( "select * from table" );
3
ответ дан 23 November 2019 в 05:12
поделиться

Возможно, я здесь не на то дерево, но ваше исключение, похоже, указывает на то, что ваш сервер MySQL недоступен.

Исключение в потоке "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Ошибка канала связи Последний пакет, успешно отправленный на сервер, был 0 миллисекунды назад. Драйвер не получил пакетов от сервера. at ...

Что произойдет, если вы попробуете (с терминала)

mysql -u username -p

Вам будет предложено ввести пароль, связанный с именем пользователя. После того, как вы введете правильный пароль, подключится ли клиент mysql?

Возможно, вам придется запустить MySQL из настроек, если нет. Вы также можете настроить его запуск при запуске.

5
ответ дан 23 November 2019 в 05:12
поделиться
dbhost=jdbc:mysql://172.18.23.100:3306/yourdatabase?useUnicode=yes&characterEncoding=UTF-8&useSSL=false
user=root
password=Password#321

con = DriverManager.getConnection(dbhost, user, password);

, если mysql версия 8 или более высокий пользователь обновили коннектор

0
ответ дан 23 November 2019 в 05:12
поделиться

Эта ошибка может также произойти, если Java пытается соединиться с MySQL по SSL, но что-то идет не так, как надо. (В моем случае я настраивал Сервер Payara 5.193.1 пула соединения к MySQL.)

Некоторые люди предложили установку useSSL=false. Однако начиная с версии 8.0.13 Connector/J, та установка удерживается от использования. Вот выборка от [1 139] Свойства Конфигурации MySQL Connector/J 8.0 :

sslMode

По умолчанию, сетевыми соединениями является зашифрованный SSL; это свойство разрешает безопасным соединениям быть выключенными, или разные уровни безопасности, которая будет выбрана. Следующие значения позволяются: DISABLED - Устанавливают незашифрованные соединения; PREFERRED - (значение по умолчанию) Устанавливают зашифрованные соединения, если сервер включил им, иначе отступите к незашифрованным соединениям; REQUIRED - Устанавливают безопасные соединения, если сервер включил им, сбой иначе; VERIFY_CA - Как REQUIRED, но дополнительно проверяют сервер сертификат TLS против настроенных сертификатов Центра сертификации (CA); VERIFY_IDENTITY - Как VERIFY_CA, но дополнительно проверяют, что сертификат сервера соответствует хосту, к которому предпринято соединение.

Это свойство заменило свойства useSSL, requireSSL прежней версии устаревшие, и verifyServerCertificate, которые все еще приняты, но переведены в значение для [1 112], если sslMode явно не установлен: useSSL=false переводится в [1 115]; {"useSSL=true", "requireSSL=false", "verifyServerCertificate=false"} переводится в [1 117]; {"useSSL=true", "requireSSL=true", "verifyServerCertificate=false"} переводится в [1 119]; {"useSSL=true" AND "verifyServerCertificate=true"} переводится в [1 121]. Нет никаких эквивалентных настроек прежней версии для [1 122]. Обратите внимание, что для ВСЕХ серверных версий настройка по умолчанию [1 123] PREFERRED, и это эквивалентно настройкам прежней версии [1 125], requireSSL=false, и verifyServerCertificate=false, которые отличаются от их настроек по умолчанию для Connector/J 8.0.12 и ранее в некоторых ситуациях. Должны быть рассмотрены заявления, которые продолжают использовать свойства прежней версии и полагаться на их старые настройки по умолчанию.

свойства прежней версии проигнорированы, если sslMode установлен явно. Если ни один из [1 129] или useSSL не установлен явно, настройка по умолчанию [1 131] применяется.

Значение по умолчанию : PREFERRED

Начиная с версии : 8.0.13

Так, в моем случае, установка sslMode=DISABLED была всем, что я должен был решить вопрос. Это было на тестовой машине. Но для производства, безопасное решение правильно настроило бы клиент Java и сервер MySQL для использования SSL.

<час>

Уведомление, что путем отключения SSL, Вам, возможно, также придется установить allowPublicKeyRetrieval=true. (Снова, не мудрое решение с точки зрения безопасности). Дополнительная информация предоставляется в [1 140] MySQL ConnectionString Options :

AllowPublicKeyRetrieval

, Если учетная запись пользователя использует sha256_password аутентификация, пароль, должен быть защищен во время передачи; TLS является предпочтительным механизмом для этого, но если это не будет доступно затем, то шифрование открытого ключа RSA будет использоваться. Для определения server’s открытого ключа RSA используйте ServerRSAPublicKeyFile установка строки подключения или установите AllowPublicKeyRetrieval=True, чтобы позволить клиенту автоматически запрашивать открытый ключ с сервера. Обратите внимание, что AllowPublicKeyRetrieval=True мог позволить злонамеренному прокси выполнять нападение MITM для получения незашифрованного пароля, таким образом, это - Ложь по умолчанию и должно быть явно включено.

0
ответ дан 23 November 2019 в 05:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: