Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 拒绝将应用程序引擎连接到云SQL访问_Google Cloud Platform_Google Cloud Sql_Google App Engine Python - Fatal编程技术网

Google cloud platform 拒绝将应用程序引擎连接到云SQL访问

Google cloud platform 拒绝将应用程序引擎连接到云SQL访问,google-cloud-platform,google-cloud-sql,google-app-engine-python,Google Cloud Platform,Google Cloud Sql,Google App Engine Python,我正在尝试让我的Flask App Engine项目读取存储在Cloud SQL MySQL 5.7数据库中的数据。有些地方出了问题,因为我只得到了pymysql.err.OperationalError。我一直在遵循这里的说明: 已启用云SQL管理API 根据链接文件: App Engine使用服务帐户授权您与云SQL的连接。此服务帐户必须具有正确的IAM权限才能成功连接。除非另有配置,否则默认服务帐户的格式为service PROJECT_NUMBER@gae-api-prod.google

我正在尝试让我的Flask App Engine项目读取存储在Cloud SQL MySQL 5.7数据库中的数据。有些地方出了问题,因为我只得到了
pymysql.err.OperationalError
。我一直在遵循这里的说明:

  • 已启用云SQL管理API

  • 根据链接文件:

    App Engine使用服务帐户授权您与云SQL的连接。此服务帐户必须具有正确的IAM权限才能成功连接。除非另有配置,否则默认服务帐户的格式为service PROJECT_NUMBER@gae-api-prod.google.com.iam.gserviceaccount.com

  • 列出项目权限的IAM页面不包含上述格式的成员。“应用程序引擎默认服务帐户”的格式为:my project-name@appspot.gserviceaccount.com. 此服务帐户具有云SQL客户端和编辑器角色

  • 虽然我的查询不成功,但每次尝试后,我都会在日志查看器中记录:
    7183[注意]用户“www-data”@'cloudsqlproxy~xxx.xxx.xx.xx的访问被拒绝(使用密码:是)
    (IP地址已编辑)。这有点令人困惑,因为“www数据”不是我在代码中指定的用户

  • 用于连接的代码:


  • 我哪里出错了?我该如何修复它?

    当尝试使用错误的凭据连接到数据库时,此错误是mySQL错误

    请验证您使用的值是否正确

    如果您不记得数据库用户名和密码,您可以在控制台上更改它,方法是执行下面的步骤,这些步骤也将被扩展

    • 选择您的数据库
    • 转到用户
    • 在用户选择旁边,单击三个点
    • 然后选择更改密码
    • 键入新密码,然后单击“确定”

    最有可能的情况是,您正在本地构建和测试您的应用程序,其中您提供了具有云SQL访问权限的用户名作为凭据。生成时,除非您另有指定,否则将为应用程序引擎实例分配默认用户名

    要解决此问题:

  • 前往IAM&admin
  • 搜索应用引擎帐户-->以
    gae-api-prod.google.com.iam.gserviceaccount.com结尾
  • 编辑
  • 为云SQL客户端分配权限


  • 如果这能帮你解决问题,请告诉我

    你的第一句话就说对了!在这种情况下,连接到数据库时出错,因为连接字符串的格式不正确。对比:
    app.config['SQLALCHEMY\u DATABASE\u URI']='mysql+pymysql://'+':'+db\u user+@/'+db\u name+'?unix\u socket=/cloudsql/'+connection\u name
    与:
    app.config['SQLALCHEMY\u DATABASE\u URI']='mysql+pymysql://'+db\u user+':'+db\u pass+'/'/'+db\u name+'?unix\u socket=/sql=/sql/'/cloudu-connection\name>。
    
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://' + ':' + db_user + '@/' + db_name + '?unix_socket=/cloudsql/' + connection_name