状況
Cloud Run から Cloud SQL for MySQL に、Cloud SQL の接続設定(Unix ソケット)でつないでいる。昨日 DB ユーザーのパスワードを変えてから、ログに「Access denied for user 'app'@'cloudsqlproxy~203.0.113.5' (using password: YES)」が出る。
最も疑わしい候補は?
- A実行サービスアカウントの Cloud SQL クライアントロール
- BCloud SQL Admin API が有効か
- Cインスタンス接続名の設定
- Dアプリが使う DB パスワード(Secret Manager の値)
- EVPC のファイアウォールルール
正答
- A
- E
- C
- D
解説
Access denied for user … は MySQL サーバーが返すエラーで、ここまで来ているということは、接続名(C)、Cloud SQL Admin API(B)、サービスアカウントの Cloud SQL クライアントロール(A)を使った接続経路はすべて通っている。どれかが欠けていれば、MySQL に届く前にコネクタ側で接続が失敗する。MySQL まで届いている以上、ネットワークの遮断(E)でもない。残るのは DB の認証そのものと、直前に変えたパスワード。Secret Manager の値を新しいパスワードに更新したか、Cloud Run が古いバージョンのシークレットを参照していないか、更新後に新しいリビジョンをデプロイしたかを確かめる。経路を疑って IAM を広げても直らない。
この問題を含む Google Cloud のテストを制限時間つきで解く
Google Cloudクイズへ