Cloud SQLをローカルのDBeaver(クライアントツール)に接続する方法を紹介します。今回はクライアントツールとしてDBeaverを選択していますが、他のツールでも問題ありません。
参考:外部アプリケーションから Cloud SQL に接続する | Cloud SQL for MySQL
前提条件
Cloud SQLをローカルのクライアントツールに接続する前提として以下が当てはまっていることが条件です。
- Cloud SQL AdminAPIが有効化されていること
- Cloud SQLのインスタンスが作成されていること
- Cloud SQLにDB・ユーザが作成されていること
プロキシクライアントのインストール
ローカルから認証に必要なプロキシクライアントをインストールします。
Macの場合は以下のコマンドでダウンロードします。他のOSからのコマンドは以下の公式を参考にしてください。
参考:ローカルマシンにプロキシ クライアントをインストールする
プロキシの実行権限を付与します。
サービスアカウントの作成
次にローカルからCloud SQLに接続する際に、認証で必要となるサービスアカウントを作成します。
GCPの「IAMと管理」からサービスアカウントを選択します。「サービスアカウントを作成」を押下します。
以下の項目を入力し、作成を押下します。
- サービスアカウント名
- サービスアカウントID
- サービスアカウントの説明
役割は「Cloud SQL クライアント」を選択し、続行を押下します。
「キーを作成」を押下します。
キーのタイプは「JSON」を選択し、作成を押下します。すると認証ファイルがダウンロードされるので、保存します。今回は、sample-key.jsonというファイル名で保存します。
プロキシの起動
先ほどインストールしたプロキシを起動します。
- instances : インスタンス接続名
- tcp : 13306
- credential_file : 先ほど保存した認証ファイル
起動し以下のように「Ready for new connections」が表示され、正常に起動できていることを確認します。
DBeaverに接続
いよいよDBeaver(クライアントツール)に接続します。
以下を入力して接続完了です。
- Server Host : ローカルループバックアドレス
- Port : 先ほど指定したポート
- Database : Cloud SQLで作成したDB名
- User name : Cloud SQLで作成したユーザ名
- Password : Cloud SQLで作成したユーザのパスワード
接続時に「Communications link failure」エラー
最後のクライアントからの接続時に以下のエラーでハマりました。
ログを確認すると以下のエラーが表示されていました。調べてみるとどうやら接続の問題のようですが、特に問題なさそう。
タイムアウトやbuffer_sizeを増やしたり、あれこれ設定を変更するが解決できず。。
結局、原因は会社で使用しているWiFiでした。試しにWiFiをオフにして、テザリングを使ってみると、問題なく接続できました。