簡體   English   中英

將 App Engine 連接到雲 SQL 拒絕訪問

[英]Connecting App Engine to Cloud SQL Access Denied

我正在嘗試讓我的 Flask App Engine 項目讀取存儲在 Cloud SQL MySQL 5.7 數據庫中的數據。 出了點問題,因為我得到的只是pymysql.err.OperationalError 我一直在按照此處的說明進行操作: https://cloud.google.com/sql/docs/mysql/connect-app-engine

  1. 雲 SQL 管理員 API 已啟用。

  2. 根據鏈接文件:

    App Engine 使用服務帳戶授權您連接到 Cloud SQL。此服務帳戶必須具有正確的 IAM 權限才能成功連接。 除非另有配置,否則默認服務帳戶的格式為 service-PROJECT_NUMBER@gae-api-prod.google.com.iam.gserviceaccount.com。

列出我的項目權限的 IAM 頁面不包含上述格式的成員。 “App Engine 默認服務帳戶”的格式為:my-project-name@appspot.gserviceaccount.com。 此服務帳戶具有 Cloud SQL Client 和 Editor 角色。

  1. 雖然我的查詢不成功,但每次嘗試后我都會在日志查看器中記錄: 7183 [Note] Access denied for user 'www-data'@'cloudsqlproxy~xxx.xxx.xx.xx' (using password: YES) (IP 地址編輯)。 這有點令人困惑,因為“www-data”不是我在代碼中指定的用戶。

  2. 用於連接的代碼:

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://' + ':' + db_user + '@/' + db_name + '?unix_socket=/cloudsql/' + connection_name

我哪里出錯了,我該如何解決?

當嘗試使用錯誤的憑據連接到數據庫時,此錯誤是 mySQL 錯誤。

請驗證您使用的值是否正確。

如果您不記得數據庫用戶名和密碼,您可以按照以下步驟在控制台上更改它,這些步驟也在此處進行了說明

  • Go 到CloudSQL 控制台
  • Select 你的數據庫
  • Go 給用戶
  • 單擊用戶 select 旁邊的三個點
  • 和 select 修改密碼
  • 鍵入新密碼並單擊“確定”

最有可能的是,您正在本地構建和測試您的應用程序,您在其中提供您的憑據以及有權訪問 Cloud SQL 的用戶名。在構建時,除非您另外指定,否則默認用戶名將分配給應用程序引擎實例。

要解決此問題:

  1. 前往IAM 和管理員
  2. 搜索應用引擎帳戶 --> 以gae-api-prod.google.com.iam.gserviceaccount.com
  3. 編輯
  4. 分配權限Cloud SQL Client

如果這能為您解決問題,請告訴我!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM