2017-03-16 50 views
0

我試圖從另一個項目上的App Engine應用程序訪問存儲在一個Cloud Platform項目中的Google Cloud SQL實例,但它不工作。儘管設置了IAM權限,但無法訪問來自不同GCP項目的Google Cloud SQL實例

連接到SQL實例失敗,此錯誤: OperationalError: (2013, "Lost connection to MySQL server at 'reading initial communication packet', system error: 38")

我跟谷歌的文檔中的說明,並且增加了App Engine服務帳戶的第二個項目的IAM權限列表中的項目住房的Cloud SQL實例(以「Cloud SQL Editor」爲角色)。我在我的應用程序中使用的連接詳細信息和配置與在與Cloud SQL實例位於同一項目中的功能完美的App Engine應用程序中使用的連接詳細信息和配置完全相同。

,似乎離我的配置的唯一的事情是,在我的第二個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連接。

回答

2

最終發現它 - 也許這會對別人遇到同樣問題有用。問題在於,「Cloud SQL Editor」角色是而非是「雲端SQL客戶端」的超集,正如我所想象的那樣; 「雲端SQL編輯器」允許管理雲端SQL實例,但不支持到數據庫的基本連接。

刪除授予雲端SQL編輯器權限的IAM條目並將其替換爲一個授予雲端SQL客戶端權限修復了問題並允許數據庫連接通過。

相關問題