当尝试使用docker cloud proxy连接到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访问范围已被禁用,我之前检查了prerequisites,他们说如果我正在创建我的云sql和计算实例项目然后我的计算应具有编辑权限。无论哪种方式,我都无法弄清楚如何为我的云sql实例提供计算实例编辑器权限。
请告诉我如何为cloud sql提供计算实例编辑器权限。
答案 0 :(得分:4)
insufficientPermissions
表示计算引擎VM正在使用默认的Compute Engine服务帐户,并且在创建VM时未启用Cloud SQL Admin作用域。在本指南的第一步中,系统会要求您验证是否存在正确的范围。
有两种方法可以解决这个问题:
创建新VM时,请在Set access for each API
中选择Identity and API access
,然后将Cloud SQL
切换为Enabled
。
如果您使用实例模板,请在实例模板上进行上述更改,并使用它来创建新实例。
或者,您可以选择Allow full access to all Cloud APIs
但请注意,这将允许VM上的任何应用程序使用服务帐户凭据访问任何Cloud API,该凭据对项目具有editor
权限默认值。
如果无法创建新VM,则可以create a new service account将凭证文件下载到VM并使用-credential_file参数使代理使用它。必须至少授予新服务帐户editor
项目访问权限。
提供更好的错误消息是一个未解决的问题: https://github.com/GoogleCloudPlatform/cloudsql-proxy/issues/6