尽管设置了IAM权限,仍无法从其他GCP项目访问Google Cloud SQL实例

Rob*_*obF 2 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编辑器”为角色)。我在应用程序中使用的连接详细信息和配置与在功能正常的App Engine应用程序(与Cloud SQL实例位于同一项目中)中使用的连接详细信息和配置相同。

关于我的配置的唯一一件事似乎是,在我的第二个GCP项目中,虽然看起来像默认帐户([MY-PROJECT-NAME]@appspot.gserviceaccount.com)的App Engine服务帐户出现在IAM权限列表中,但该服务帐户在“服务帐户”标签的“ IAM和管理员。列出的唯一服务帐户是Compute Engine default service account。我尚未删除任何服务帐户;这里从未列出过App Engine默认服务帐户,但除了MySQL连接外,App Engine应用程序运行良好。

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

Rob*_*obF 5

最终弄清楚了-也许这对遇到相同问题的其他人很有用。

问题:

问题是“ Cloud SQL编辑器”角色不是我想象的“ Cloud SQL客户端”的超集;“ Cloud SQL编辑器”允许管理Cloud SQL实例,但不允许与数据库的基本连接。

解:

删除授予Cloud SQL编辑器权限的IAM条目,并替换为授予Cloud SQL客户端权限的IAM条目,可以解决此问题并允许数据库连接通过。