将 Google 云计算连接到 Google 云 SQL 错误 2013 (HY000)

Connecting Google Cloud Compute to Google Cloud SQL ERROR 2013 (HY000)

当尝试使用 docker 云代理连接到 mysql 时:

mysql -u <USERNAME> -p -S /cloudsql/<YOUR-PROJECT-ID>:<REGION-NAME>:<SQL-INSTANCE-NAME>

我收到这个错误

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 95

根据文档,这就是我想设置代理的方式

docker run -d -v /cloudsql:/cloudsql \
  -v /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt \
  b.gcr.io/cloudsql-docker/gce-proxy /cloud_sql_proxy -dir=/cloudsql \
  -instances=<PROJECT-ID>:<REGION-NAME>:<SQL-INSTANCE-NAME>

这里是 documentation 设置。

对于那些可能会问这个问题的人,我确实正确地设置了这些参数

<PROJECT-ID>:<REGION-NAME>:<SQL-INSTANCE-NAME>

代理的输出:

2016/03/20 19:49:15 listenInstance: "<PROJECT-ID>:<REGION-NAME>:<SQL-INSTANCE-NAME>"
2016/03/20 19:49:15 Remove("/cloudsql/<PROJECT-ID>:<REGION-NAME>:<SQL-INSTANCE-NAME>") error: remove /cloudsql/<PROJECT-ID>:<REGION-NAME>:<SQL-INSTANCE-NAME>: no such file or directory
2016/03/20 19:49:15 Open socket for "<PROJECT-ID>:<REGION-NAME>:<SQL-INSTANCE-NAME>" at "/cloudsql/<PROJECT-ID>:<REGION-NAME>:<SQL-INSTANCE-NAME>"
2016/03/20 19:49:15 Socket prefix: /cloudsql
2016/03/20 19:51:29 Got a connection for "<PROJECT-ID>:<REGION-NAME>:<SQL-INSTANCE-NAME>"
2016/03/20 19:51:30 couldn't connect to "<PROJECT-ID>:<REGION-NAME>:<SQL-INSTANCE-NAME>": googleapi: Error 403: Insufficient Permission, insufficientPermissions

所以我查看了我的计算实例,我的 Api 云 sql 访问范围被禁用,我之前检查过 prerequisites,他们说如果我在同一项目中创建我的云 sql 和计算实例,然后我的计算应该具有编辑权限。无论哪种方式,我都不知道如何为我的云 sql 实例授予我的计算实例编辑器权限。

请告诉我如何为我的云计算实例编辑权限 sql。

insufficientPermissions 表示 Compute Engine VM 使用默认的 Compute Engine 服务帐户,并且在创建 VM 时未启用 Cloud SQL Admin 范围。在指南的第一步中,您需要验证是否存在正确的范围。

有两个选项可以解决此问题:

选项 a) 使用云创建一个新 VM SQL 启用管理范围。

创建新VM时,selectSet access for each APIIdentity and API access中切换Cloud SQLEnabled

如果您使用的是实例模板,请对实例模板进行上述更改并使用它来创建新实例。

或者,您可以 select Allow full access to all Cloud APIs 但请注意,这将允许 VM 上的任何应用程序使用服务帐户凭据访问任何 Cloud API,该凭据具有 editor 默认情况下对项目的权限。

选项 b) 使用不同服务帐户的凭据

如果无法创建新的 VM,您可以 create a new service account,将凭据文件下载到 VM 并使用 -credential_file 参数让代理使用它。新服务帐户必须至少被授予 editor 项目访问权限。

有一个未解决的问题可以提供更好的错误消息: https://github.com/GoogleCloudPlatform/cloudsql-proxy/issues/6