首页 文章

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

提问于
浏览
0

我正在尝试从另一个项目上的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 . 我没有't deleted any service accounts; there'从来没有在这里列出的App Engine默认服务帐户,但除了MySQL连接,App Engine应用程序运行正常 .

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

1 回答

  • 3

    最终想出来 - 也许这对遇到同样问题的其他人有用 . 问题在于"Cloud SQL Editor"角色不是我想象的"Cloud SQL Client"的超集; "Cloud SQL Editor"允许管理Cloud SQL实例,但不允许与数据库的基本连接 .

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

相关问题