{GCP Cloud SQL}ローカル コンピュータから Cloud SQL for MySQL に接続する

 

https://cloud.google.com/sql/docs/mysql/connect-instance-local-computer?hl=ja#gcloud

前提:
Goインストール済
Gitインストール済
mysqlクライアントインストール済


-- 1. 前作業

gcloud init
gcloud auth list

gcloud --version

gcloud projects create project01-9999999 \
--name="project01"

gcloud projects list


gcloud config list
gcloud config set project project01-9999999
gcloud config set compute/region asia-northeast1 --quiet
gcloud config set compute/zone asia-northeast1-a --quiet

gcloud beta billing accounts list
gcloud beta billing projects link project01-9999999 --billing-account=111111-111111-111111

gcloud services enable compute.googleapis.com --project project01-9999999

gcloud components update


-- 2. Cloud SQL Admin APIとIAM APIの有効化

gcloud services list --enabled

gcloud services enable sqladmin.googleapis.com iam.googleapis.com

 

-- 3. Cloud SQLインスタンスの作成


gcloud sql tiers list


gcloud sql instances create mysql01 \
--assign-ip \
--availability-type=zonal \
--database-version=MYSQL_8_0_30 \
--enable-bin-log \
--no-deletion-protection \
--retained-backups-count=1 \
--root-password='password' \
--no-storage-auto-increase \
--storage-size=10 \
--storage-type=HDD \
--region=asia-northeast1 \
--tier=db-f1-micro

 


gcloud sql instances list


-- 4. 接続確認

gcloud sql connect mysql01 --user=root


MYSQL_PWD='password' mysql -h 192.0.2.1 -P 3306 -u root


-- 5. データベースの作成

gcloud sql databases create db01 \
--instance=mysql01

gcloud sql databases list --instance=mysql01


-- 6. ユーザーの作成

gcloud sql users create user01 \
--instance=mysql01 \
--password='password'

gcloud sql users list --instance=mysql01

 

-- 7. サービス アカウントの設定

gcloud iam service-accounts create sa11111111 \
--description="sa11111111" \
--display-name="sa11111111"

gcloud iam service-accounts list


gcloud projects add-iam-policy-binding project01-9999999 \
--member="serviceAccount:sa11111111@project01-9999999.iam.gserviceaccount.com" \
--role="roles/cloudsql.client"

gcloud projects get-iam-policy project01-9999999


gcloud iam service-accounts keys create ~/key01.json \
--iam-account=sa11111111@project01-9999999.iam.gserviceaccount.com

cat ~/key01.json

gcloud iam service-accounts keys list \
--iam-account=sa11111111@project01-9999999.iam.gserviceaccount.com

 

-- 8. サンプルアプリのクローンを作成する

git clone https://github.com/GoogleCloudPlatform/golang-samples
cd golang-samples/cloudsql/mysql/database-sql


-- 9. サンプルアプリを構成して実行する

export GOOGLE_APPLICATION_CREDENTIALS=~/key01.json
export INSTANCE_CONNECTION_NAME='project01-9999999:asia-northeast1:mysql01'
export DB_PORT='3306'
export DB_NAME='db01'
export DB_USER='user01'
export DB_PASS='password'

go get ./...
go run cmd/app/main.go

http://127.0.0.1:8080

 

-- 10. クリーンアップ


gcloud projects list

gcloud projects delete project01-9999999

rm -rf key01.json