![](/img/trans.png)
[英]ENOENT when connecting to Google Cloud SQL from App Engine
[英]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 。
雲 SQL 管理員 API 已啟用。
根據鏈接文件:
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 角色。
雖然我的查詢不成功,但每次嘗試后我都會在日志查看器中記錄: 7183 [Note] Access denied for user 'www-data'@'cloudsqlproxy~xxx.xxx.xx.xx' (using password: YES)
(IP 地址編輯)。 這有點令人困惑,因為“www-data”不是我在代碼中指定的用戶。
用於連接的代碼:
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 的用戶名。在構建時,除非您另外指定,否則默認用戶名將分配給應用程序引擎實例。
要解決此問題:
gae-api-prod.google.com.iam.gserviceaccount.com
如果這能為您解決問題,請告訴我!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.