尽管设置了IAM权限,但无法从不同的GCP项目访问Google Cloud SQL实例

问题描述 投票:1回答:1

我正在尝试从另一个项目上的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项目中,当看起来像默认的App Engine服务帐户([MY-PROJECT-NAME]@appspot.gserviceaccount.com)出现在IAM权限列表中时,此服务帐户未列在“服务帐户”选项卡下IAM和管理员列出的唯一服务帐户是Compute Engine default service account。我没有删除任何服务帐户;这里没有列出App Engine默认服务帐户,但除了MySQL连接外,App Engine应用程序运行正常。

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

python mysql google-app-engine google-cloud-sql
1个回答
4
投票

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

问题:

问题在于,“Cloud SQL Editor”角色不是我所想象的“Cloud SQL Client”的超集; “Cloud SQL Editor”允许管理Cloud SQL实例,但不允许与数据库的基本连接。

解:

删除授予Cloud SQL编辑器权限的IAM条目并将其替换为授予Cloud SQL Client权限的权限可修复该问题并允许数据库连接通过。

© www.soinside.com 2019 - 2024. All rights reserved.