Не удалось подключиться к Google Cloud sql

Приложение моего приложения Google не удается подключиться к экземпляру sql-сервера Google с этой ошибкой:

'PDOException' with message 'SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it. 

Я проверил документацию и внимательно следил за инструкциями. Я добавил приложение в качестве авторизованного приложения и установил пароль root с помощью облачной консоли. Я также предоставил ip-адрес и могу подключиться к нему из Workbench на локальной машине разработки. Используя workbench, я добавил пользовательские и настроенные разрешения. Но я до сих пор не могу подключиться к нему из dev-версии приложения (такого же ip-инструмента, как Workbench), или из развернутого приложения.

Вот моя линия подключения:

 $conn = new PDO('mysql:unix_socket=/cloudsql/****:****;charset=utf8', 'the_username', 'its_password'); 

этот вопрос, похоже, подобен этой проблеме. Однако даже после настройки нового пользователя и предоставления разрешений я все еще не могу подключиться. Любая идея, где я пошла не так?

благодаря

Solutions Collecting From Web of "Не удалось подключиться к Google Cloud sql"

Обратите внимание, что при установке корневых паролей применяются только соединения, идущие по IP. Соединения с App Engine отображаются на сервере MySQL как исходящие из localhost. Поэтому убедитесь, что пароль для «root @ localhost» – это тот, который вы сконфигурировали в коде.

Быстрый способ проверить состояние паролей – подключиться через IP и задать следующий запрос:

 mysql> SELECT user,host,password FROM mysql.user; +-------+-----------+-------------------------------------------+ | user | host | password | +-------+-----------+-------------------------------------------+ | root | localhost | | | root | 127.0.0.1 | | | root | ::1 | | | | localhost | | | root | % | *3D56A309CD04FA2EEF181462E59011F075C89548 | | admin | 127.0.0.1 | | +-------+-----------+-------------------------------------------+ 6 rows in set (0.11 sec) mysql> SELECT password('xxx'); +-------------------------------------------+ | password('xxx') | +-------------------------------------------+ | *3D56A309CD04FA2EEF181462E59011F075C89548 | +-------------------------------------------+ 1 row in set (0.11 sec) mysql> 

Вышеприведенное показывает, как экземпляр появляется после установки пароля root для подключений по IP («root @%») до «xxx». Обратите внимание, что пароль для «root @ localhost» пуст, поэтому для соединений из App Engine по-прежнему не требуются пароли.

При подключении к Cloud SQL из авторизованного приложения App Engine пароль не требуется (на самом деле он не будет работать, если вы попытаетесь установить соединение с паролем).

Измените строку подключения на jdbc: google: mysql: ///? user = корень, опуская & password = part

Одна вещь, которую я пробовал, – это попытаться подключиться к моему приложению через клиент MySQL непосредственно к моему прокси, чтобы проверить, не был ли мой код проблемой: См.: Подключение клиента mysql с помощью Cloud SQL Proxy

Это все еще не работало для меня, что заставило меня поверить, что это может быть что-то с фактическим сетевым подключением. Я заметил, что прокси-сервер Cloud SQL, который я запускал локально, возвращал правильный IP-адрес экземпляра (ошибка выглядела примерно так:

 couldn't connect to "{connectionName}": dial tcp {ip address}:3307: getsockopt: operation timed out 

Вы можете подтвердить, что IP-адрес, полученный там, совпадает с таковым в Cloud Cloud Console.

Затем я попытался подключиться через другое интернет-соединение и смог подключиться. Оказывается, это был брандмауэр в исходном соединении, который не позволял подключиться! Дважды проверьте настройки безопасности, которые могут препятствовать прохождению соединения.