Cloud SQLをローカルのDBeaver(クライアントツール)にプロキシを使用して接続する方法

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をオフにして、テザリングを使ってみると、問題なく接続できました。