将 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 API
在Identity and API access
中切换Cloud SQL
到Enabled
。
如果您使用的是实例模板,请对实例模板进行上述更改并使用它来创建新实例。
或者,您可以 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
当尝试使用 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 API
在Identity and API access
中切换Cloud SQL
到Enabled
。
如果您使用的是实例模板,请对实例模板进行上述更改并使用它来创建新实例。
或者,您可以 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