📘
Cloud SQLに接続するまで
先日 Cloud SQL を使う機会があったのでその時のメモです。
参考
クライアントから直接 SQL サーバへは接続できない
これは不正なクライアントがインターネットから接続するのを防ぐため。普通データベースは接続時にユーザ名とパスワードを要求するが、GCP の場合接続時にGCP の IAM アカウントも必要とする(接続してきたユーザが当該 SQL サーバへ接続する権限があるかを判別するため)。なので接続するための専用アカウントをサービスアカウントとして用意する。
よってプロキシを立ててそれにうまいことやってもらう。つまり
ローカルのクライアント(各言語のクライアントライブラリやmysqlコマンドなど)
-> ローカルで立てたプロキシ
-> サーバ側のプロキシ
-> SQLサーバ
のような構成で接続する形になる。
事前準備
-
Cloud SQL Admin API
を有効化 (プロキシを立てるのに必要っぽい) -
Cloud SQL
インスタンスを作成しておく - DB を作っておく
ユーザも作っておくとなお良し - サービスアカウントを作っておく
キーをダウンロードしパスを覚えとく
接続
# サービスアカウントの情報が載ってるJSONまでのパスを環境変数に追加
export GOOGLE_APPLICATION_CREDENTIALS=CREDENTIALS_JSON_FILE_PATH
# cloud_sql_proxyをダウンロード
curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64
# ↑を実行可能に
chmod +x cloud_sql_proxy
# プロキシサーバを起動(起動後別のシェルでMySQLサーバにプロキシサーバ経由で接続する)
./cloud_sql_proxy -instances= ./cloud_sql_proxy -instances=接続名=tcp:0.0.0.0:1234=tcp:0.0.0.0:1234
# 別シェルでMySQLに接続
mysql -u root -p -h 127.0.0.1 -P 3306
Discussion