Получение исключения SQLNonTransientConnectionException в Google Appengine

#mysql #google-app-engine #google-cloud-platform #google-cloud-sql

#mysql #google-app-engine #google-облачная платформа #google-облако-sql

Вопрос:

Я использую MySQL («Облачный SQL») на платформе Google в течение многих лет. Первое поколение. Только SSL-соединения. Все мои сертификаты были на месте в течение нескольких месяцев и работали просто отлично. Срок действия моих сертификатов не истек. За последние полтора дня мне не удалось подключиться к базе данных!!! Попытался перезапустить базу данных. Изменил ли Google что-либо в своей среде в результате атак типа «отказ в обслуживании», которые начались в пятницу?

 Exception in thread "main" java.sql.SQLNonTransientConnectionException: SSL Connection required, but not supported by server.
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:550)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:537)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:527)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:512)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:480)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:498)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:494)
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:72)
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1634)
    at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:637)
    at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:351)
    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:224)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:208)
    at ... my code
  

Что происходит?

Ответ №1:

Итак, после некоторого расследования я вижу, что мои сертификаты на стороне сервера пропали. Я обнаружил это, используя консоль разработчика для перезапуска моего экземпляра CloudSQL. Затем я исследовал журналы.

 2016-10-22 12:42:47 0 [Note] (mysqld 5.6.31-log) starting as process 554455 ...
2016-10-22 12:42:47 554455 [Note] Semi-sync replication initialized for transactions.
2016-10-22 12:42:47 554455 [Note] Semi-sync replication enabled on the master.
2016-10-22 12:42:47 554455 [Note] InnoDB: Using atomics to ref count buffer pool pages
2016-10-22 12:42:47 554455 [Note] InnoDB: The InnoDB memory heap is disabled
2016-10-22 12:42:47 554455 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2016-10-22 12:42:47 554455 [Note] InnoDB: Memory barrier is not used
2016-10-22 12:42:47 554455 [Note] InnoDB: Compressed tables use zlib 1.2.8
2016-10-22 12:42:47 554455 [Note] InnoDB: Using CPU crc32 instructions
2016-10-22 12:42:47 554455 [Note] InnoDB: Initializing buffer pool, size = 96.0M
2016-10-22 12:42:47 554455 [Note] InnoDB: Completed initialization of buffer pool
2016-10-22 12:42:47 554455 [Note] InnoDB: Highest supported file format is Barracuda.
2016-10-22 12:42:51 554455 [Note] InnoDB: 128 rollback segment(s) are active.
2016-10-22 12:42:51 554455 [Note] InnoDB: 5.6.31 started; log sequence number 10094548402
2016-10-22 12:42:52 554455 [Note] RSA private key file not found: /sfs/project/database/data//private_key.pem. Some authentication plugins will not work.
2016-10-22 12:42:52 554455 [Note] RSA public key file not found: /sfs/project/database/data//public_key.pem. Some authentication plugins will not work.
2016-10-22 12:42:52 554455 [Note] Add the 'cloudsqladmin' user with the password hash '*ACE49C8814A8031C812FD739A573BDD4FFF8F7EE'
2016-10-22 12:42:53 554455 [Note] Event Scheduler: Loaded 0 events
2016-10-22 12:42:53 554455 [Note] : ready for connections.
Version: '5.6.31-log' socket: '' port: 0 (43, 47) (Google)
  

Я все еще надеюсь понять, как это произошло, обновлю, когда смогу. Учитывая, что это произошло на стороне Google, я не уверен, что смогу исправить это напрямую. Я вижу, что в консоли разработчика есть опция «Сбросить конфигурацию SSL». Я надеюсь, что мне не придется этого делать, потому что это означало бы внедрение новых сертификатов в производственный код и всех разработчиков. Моя проблема также отслеживается здесь:https://code.google.com/p/googlecloudsql/issues/detail?id=188

Комментарии:

1. В конечном итоге я помог себе. Я использовал опцию «Сбросить конфигурацию SSL» в консоли разработчика. Возможно, этот пост поможет кому-то еще в трудную минуту. Я знаю, что не у всех есть поддержка platinum.