Работая в Mac OS X, я пытался подключиться к экземпляру Cloud SQL через прокси, используя эти направления. После того, как вы установили клиент MySQL, контейнер gce-proxy и создали учетную запись службы в Google Cloud Platform, вы можете приступить к выполнению этих двух команд, указанных в документации:
docker run -d -v /cloudsql:/cloudsql \
-v [LOCAL_CERTIFICATE_FILE_PATH]:[LOCAL_CERTIFICATE_FILE_PATH] \
b.gcr.io/cloudsql-docker/gce-proxy /cloud_sql_proxy \
-instances=[INSTANCE_CONNECTION_NAME]=tcp:3306 -credential_file=[CLOUD_KEY_FILE_PATH]
mysql -h127.0.0.1 -uroot -p
Во-первых, я не понимаю, как это должно работать, поскольку контейнер не предоставляет порт. Поэтому неудивительно, что когда я попытался подключиться, я получил следующую ошибку от клиента MySQL:
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (61)
Но если я открываю порт, добавляя -p 3306:3306
к команде docker run
, я все равно не могу подключиться. Вместо этого я получаю от клиента MySQL следующую ошибку:
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
Я успешно подключился к прокси, запущенному cloud_sql_proxy
на моем хост-компьютере докера, следуя этой документации, поэтому я уверен, что мой файл учетных данных и мой клиент mysql настроены правильно. В журналах контейнера не указывается, что была предпринята попытка подключения. У меня нет проблем с подключением к обычному контейнеру mysql через докер. Что мне здесь не хватает?