尽管设置了IAM权限

时间:2017-03-16 06:14:40

标签: python mysql google-app-engine google-cloud-sql

我试图从另一个项目上的App Engine应用程序访问存储在一个Cloud Platform项目中的Google Cloud SQL实例,但它无法正常工作。

与SQL实例的连接失败,并显示以下错误: OperationalError: (2013, "Lost connection to MySQL server at 'reading initial communication packet', system error: 38")

我按照Google的文档中的说明操作,并将第二个项目的App Engine服务帐户添加到容纳Cloud SQL实例的项目的IAM权限列表中(使用" Cloud SQL Editor"作为角色)。我在我的应用程序中使用的连接详细信息和配置与在与Cloud SQL实例位于同一项目中的功能完善的App Engine应用程序中使用的相同。

关于我的配置唯一似乎是在我的第二个GCP项目中,当IAM权限列表中出现看起来像默认值([MY-PROJECT-NAME]@appspot.gserviceaccount.com)的App Engine服务帐户时,此服务帐户是IAM& A的服务帐户标签下列出的管理员。列出的唯一服务帐户是Compute Engine default service account。我还没有删除任何服务帐户;此处未列出App Engine默认服务帐户,但除了MySQL连接外,App Engine应用程序运行良好。

不确定它是否相关,但我在App Engine标准环境中运行Python 2.7应用程序,使用MySQLdb进行连接。

1 个答案:

答案 0 :(得分:4)

最终想出来 - 也许这会对遇到同样问题的其他人有用。

<强>问题:

  

问题在于&#34;云端SQL编辑器&#34;角色是不是超集   正如我想象的那样,&#34; Cloud SQL Client&#34; &#34; Cloud SQL Editor&#34;   允许管理Cloud SQL实例,但不允许   与数据库的基本连接。

<强>解决方案:

  

删除授予Cloud SQL Editor权限的IAM条目   将其替换为授予Cloud SQL Client权限的一个   问题并允许数据库连接通过。