Cloud SQLに接続する設定方法

# 概要
　`Google Cloud`のツールである`Google Cloud SQL`に接続する必要があった為、その接続するまでの設定方法についてまとめます。`Google Cloud SQL`は、初めて使用する為、今回も自身の備忘録も兼ねて記載します。

## `Cloud SQL`の概要
　`Googleが`提供するクラウド上のマネージドデータベースサービス。
　`MySQL`、`PostgreSQL`、`SQL` `Server`等、人気のあるデータベースが利用可能で、ユーザーは殆ど管理作業を行う事なく、簡単にデータベースをセットアップして使用する事が可能となる。

https://cloud.google.com/sql?hl=ja

# 1. `gcloud CLI`のインストール
## `gcloud CLI`の概要
　`Google Cloud Platform`（GCP）のリソースとサービスを管理する為のツール。これを使って、コマンドラインから直接GCPの各種機能を操作する事が可能となる。

https://cloud.google.com/sdk/gcloud?hl=ja

## `gcloud CLI`の導入手順
- `gcloud CLI`　を使用する為、下記のサイトから自身のOSにあった、パッケージをダウンロードする
(私は`Mac　PC`で開発している為、`MacOS`のパッケージをインストールしています)
![gcloud CLIのパッケージ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/664659/83dd20c8-7669-e5be-ecff-712745667a72.png)

- `google-cloud-sdk`ファイルは、ホームディレクトリーに配置する
```sh
# Unix系システム（macOSやLinuxを含む）では、ホームディレクトリは通常、以下のパスにある
macOS: /Users/username
Linux: /home/username

# usernameは、ユーザー名を示している
# 例えば、ユーザー名が`john`であれば、ホームディレクトリは /Users/john（macOS）または /home/john（Linux）になる。
# ホームディレクトリーは、シェルスクリプトやコマンドラインで ~（チルダ）という記号で表す事が可能
$ ~
```

- [**ホームディレクトリー**]にて、下記のコマンドを実行する
```sh
$ ./google-cloud-sdk/install.sh
```

- `gcloud --version`のコマンドを実行して、バージョンが確認できたら`gcloud CLI`の導入が完了
```sh
$ gcloud --version
// 出力結果     
Google Cloud SDK 429.0.0
bq 2.0.92
cloud_sql_proxy 1.27.0
core 2023.04.28
gcloud-crc32c 1.0.0
gsutil 5.23
```

- `GCP`にアカウントが作成されていれば、下記のコマンドにて`CLI`でログインが可能となる
```sh
$ gcloud auth login
# 出力結果
Your browser has been opened to visit:

    https://accounts.google.com/ ~
# 省略

You are now logged in as [`gmailアドレス`].
Your current project is [`プロジェクト名`].  You can change this setting by running:
  $ gcloud config set project PROJECT_ID

# 下記は、必要に応じて設定を行う
$ gcloud config set project PROJECT_ID
```

# 2.`Cloud SQL Auth Proxy`のインストール
## `Cloud SQL Auth Proxy`の概要
　`Google Cloud`のツールで、`Google Cloud SQL`データベースへの安全で安定した接続を簡単に確立する事が出来るツール。
　公開`IP`や`SSL/TLS`の複雑な設定を必要とせず、`Google`の認証と認可を使用してセキュアな接続が可能となる。また、接続が切れた場合でも自動的に再接続を試みる機能を提供し、接続の安定性も確保しているので安心である

https://cloud.google.com/sql/docs/sqlserver/sql-proxy?hl=ja

## `Cloud SQL Auth Proxy`の導入手順
- [Cloud SQL Auth Proxyをインストール](https://cloud.google.com/sql/docs/sqlserver/sql-proxy?hl=ja#requirements)から`Cloud SQL Auth Proxy`をインストールするコマンドを[**ホームディレクトリー**]で実行する
- `Cloud SQL Auth Proxy`をインストールする際は、`OS`によりコマンドが異なる為、自身の`PC`に適合するコマンドを使用する
- 著者は`MacPC`を使用しているので、下記のコマンドでインストールを行った

```sh
# インストールコマンド
$ curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.1.2/cloud-sql-proxy.darwin.amd64

# ディレクトリーの操作権限付与コマンド
$ chmod 744 cloud-sql-proxy
```

- `gcloud components list`をターミナルで実行し、`Cloud SQL Proxy`がインストールされているか確認する
```sh
$ gcloud components list
# 出力結果
Your current Google Cloud CLI version is: 429.0.0
The latest available version is: 429.0.0

Components

# 省略

# Cloud SQL ProxyのステータスがInstalledであればOK
Status: Installed
Name: Cloud SQL Proxy
ID: cloud_sql_proxy
Size: 7.6 MiB

# 省略
```

もし、`Status`が`Not Installed`の場合は、下記のコマンドで、`Installed`にする
```sh
$ gcloud components install cloud_sql_proxy
```

- `cloud_sql_proxy --version`のコマンドを実行して、バージョンが確認できたら`Cloud SQL Auth Proxy`の導入が完了
```sh
$ cloud_sql_proxy --version
# 出力結果         
Cloud SQL Auth proxy: 1.27.0+darwin.amd64
```

- 下記の公式手順に従い、自身の使用している`DB`の`Cloud SQL Auth Proxy`の起動方法を実施する

[【公式】Cloud SQL Auth Proxy の起動【MySQL】](https://cloud.google.com/sql/docs/mysql/connect-instance-auth-proxy?hl=ja#start_the)

[【公式】Cloud SQL Auth Proxy の起動【PostgreSQL】](https://cloud.google.com/sql/docs/postgres/connect-instance-auth-proxy?hl=ja#start_the)


[【公式】Cloud SQL Auth Proxy の起動【SQL Server】](https://cloud.google.com/sql/docs/sqlserver/connect-instance-auth-proxy?hl=ja#start_the)

- `Cloud SQL Auth Proxy`が起動できたら、`Cloud SQL`に使用している`DB`にアクセスを行う

MySQL
```sh
mysql -u root -p --host 127.0.0.1 --port 3306
```

PostgreSQL
```sh
psql "host=127.0.0.1 port=5432 sslmode=disable dbname=DB_NAME user=postgres"
```

SQL Server
```sh
sqlcmd -S 127.0.0.1 -U USER_NAME
```

:::note alert
注意
　上記のコマンドを使用する場合は、ローカル環境に`MySQL`、`PostgreSQL`、`SQL Server`をインストールしておく必要があります
:::


# 参考資料
- [M1 mac 買ったので、楽しく設定してたら Cloud SQL Proxy がいつまで経ってもインストールできなかった話](https://qiita.com/yanskun/items/62d7d787391691a1e4f4)
- [【公式】gcloud CLI をインストールする](https://cloud.google.com/sdk/docs/install?hl=ja)
- [【公式】Cloud SQL Auth Proxy クライアントをインストールする](https://cloud.google.com/sql/docs/mysql/connect-instance-auth-proxy?hl=ja#install-proxy)
- [Mac の開発を便利にするパッケージ管理ソフト Homebrew のインストール手順](https://weblabo.oscasierra.net/homebrew-1/)

# 感想
`GCP`は初めて使用する為、分からない事が多々ありますが、今後もしっかりキャッチアップして`GCP`について理解していきたいです。