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进行连接。
最终弄清楚了-也许这对遇到相同问题的其他人很有用。
问题:
问题是“ Cloud SQL编辑器”角色不是我想象的“ Cloud SQL客户端”的超集;“ Cloud SQL编辑器”允许管理Cloud SQL实例,但不允许与数据库的基本连接。
解:
删除授予Cloud SQL编辑器权限的IAM条目,并替换为授予Cloud SQL客户端权限的IAM条目,可以解决此问题并允许数据库连接通过。
| 归档时间: |
|
| 查看次数: |
1488 次 |
| 最近记录: |