sh1’s diary

プログラミング、読んだ本、資格試験、ゲームとか私を記録するところ

GCP の MySQL とローカル Navicat の接続 (Google Cloud SQL)

環境

  • Navicat (Navicat Lite 9.1.9)
  • Navicat Premium (試用版 12.0.29)

GCP SQL の準備

データベースを使えるみたいなので MySQL をやってみる。
目標はタイトルのとおり、ローカルの Navicat と接続すること。(好きにテーブルを作ったり、行を操作できること)

f:id:shikaku_sh:20181030165412p:plain:w450

  1. GCP の「SQL」の項目から「インスタンスを作成」
  2. データベース「MySQL」を選択して「次へ」
  3. インスタンスのタイプは「第2世代を選択」
  4. インスタンス ID と root のパスワードを設定して「作成」
  5. 作成には数分かかるのでインスタンスが有効になったら作成は完了

データベースのロケーションは「asis-northeast」が日本みたいです。たぶん。

f:id:shikaku_sh:20181030165437p:plain:w450

こんな感じの緑丸のチェックで OK でした。

インスタンスの詳細を確認

f:id:shikaku_sh:20181030165629p:plain:h300

  1. 「概要」から「このインスタンスに接続」の項目を探す
  2. 「パプリック IP アドレス」をメモする
  3. 「Cloud Shell」で接続できるかテストする(CUI怖くないなら)

「Cloud Shell を使用して接続」を選択すると次のコードを入力した状態のシェルが起動します。

gcloud sql connect インスタンスID --user=root --quiet
(* 初めて使うときは Cloud Shell の使い方ガイドから)

で、ENTER キーを押すと接続。少し時間がかかりました。
パスワードを要求するので root に設定したパスワードを入力。

f:id:shikaku_sh:20181030165535p:plain:w450

コンソールには入力した文字が何も表示されません。( * みたいなのも出ません)
入力されているかわからないけど、正確に入力して ENTER キーを押して下さい。

はじめてみよう: Google Cloud SQLGoogle はコンソールに入力する例を挙げているので、これを入れてみます。

CREATE DATABASE guestbook;
USE guestbook;

CREATE TABLE entries (guestName VARCHAR(255), content VARCHAR(255),
    entryID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(entryID));
INSERT INTO entries (guestName, content) values ("first guest", "hello world!");


SELECT * FROM entries;
commit;

外部接続の設定

この外部接続の設定をしてあげると Navicat からの接続が可能になります。
逆に、なんらかの設定をしないと シェル以外では接続ができないみたいですね。

f:id:shikaku_sh:20181030165722p:plain:w450

  1. ローカル環境のグローバルIP確認する
  2. 「接続」から「パブリック IP」の「ネットワークに追加」を探す
  3. 「ネットワーク」にグローバルIPを **.**.**.**/24 で入力し「完了を選択」
  4. 「保存」を選択

Naivcat の設定は動画のサンプルに従うとわかりやすい。
最新の Premium は「My SQL for Google Cloud Platform」を選択しました。
逆に古い Lite は「My SQL」を選択しました。

おつかれさまです。
Navicat で自由に編集できるようになりました。

おわりに

技術的な問題というよりも GCP が何をして、何を期待しているのかわからず、時間がかかりました。
設定画面は AWS とは当たり前に違う。
Kubernetes じゃないけど、開発者にかかる無駄なコストだなぁと思った次第。