HerokuにデプロイしたはいいがDBはどうやって使うのだ？（ClearDBの使い方）

先日、開発初期段階でLaravelアプリをHerokuにデプロイしました。→**[まだ全然しょぼいLaravelアプリをHerokuにデプロイしてみた](https://qiita.com/kakudaisuke/items/26c2f8fc9b10955e53db)**

デプロイできたのはいいものの、ClearDBの使い方が全然わからず途方に暮れまして、ひょっとしたら僕と同じように悩む初学者の方がいるかもしれないので、参考になればと思いメモしておきます。

使うもの
Heroku, ClearDB MySQL, MacOS


#ClearDBにもphpMyAdminみたいにGUIで操作できるツールはあるのか？
→あります。MySQL Workbench、Sequel Proなどです。

Herokuのサイト上の、Resources > Add-ons で ClearDB MySQLをクリックすると、NAVISITEというClearDBらしきサイトにジャンプできます。このページのHow to Connectに下記のように書いてあります。
（このNAVISITEには、ターミナルから`$ heroku addons:open cleardb`でも行けます。
）
>Managing Your Databases
If you want to manage the tables, data and other settings in your Navisite database, we recommend that you use commonly known Graphical tools such as Oracle's MySQL Workbench, Sequel Pro for Mac OS X, or Navicat. You can also use any of the bundled MySQL tools, such as the mysql and mysqldump command-line utilities.

###MySQL Workbench
今回はWorkbenchを使うことにしました。[こちら](https://www.mysql.com/jp/products/workbench/)から簡単にダウンロードできます。DB設計に便利なER図を描ける便利ツールもついてます。

Workbenchを開いたら、+ボタンで新しいConnectionを作成します↓
![スクリーンショット 2020-09-12 15.13.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645077/3567769f-8e73-54a2-2185-20557d077f38.png)
開いたら下記項目を書き込みます。基本的には、HerokuのClearDBの情報を入れれば良いですが（Herokuページ > Settings > Config Vars参照）、Connection Nameは適当でいいっぽいです。とりあえず私はプロジェクト名を入れておきました↓
![スクリーンショット 2020-09-12 15.14.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645077/a4f6a569-6a17-b0a7-b84b-97931c637d07.png)
作成できたConnectionをクリックすると、私はなんかこんなwarningが出ますが...
![スクリーンショット 2020-09-12 15.37.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645077/5ce5b869-1254-4219-ef53-1e6de292dd40.png)
Continue anywayすると、こんなUIに辿り着きます↓
![スクリーンショット 2020-09-12 15.37.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645077/052b725b-d606-429c-fccb-9794241fc1e1.png)
↑やや操作が直感的ではないですが、ここでテーブルの設定を見たり、SQL文を打ち込んだりできます。

というわけで、GUIツールがあることはわかりましたが、ターミナルでも操作できるのでしょうか。
#ClearDB MySQLはターミナルでも操作できるのか？
→できます。

ただし、至極当然な話ですがMySQLがPCにインストールされてないとできません。ただし、MAMPのMySQLとは別物です（→私みたいな初学者にはこういうところが至極当然ではなく地味にわからなくて苦労します...!!）。

ターミナルでmysqlコマンドを何か打ってみて（例えばMySQLのバージョンを参照するなど。下記参照）`command not found`と出てきたらMySQLが入ってないです↓

```terminal
$ mysql --version
もしくは
$ mysql -V
```
MySQLがない！！ってなった方は、HomeBrewで下記のコマンドでインストールできます↓
**HemoBrewとは＝MacOS用のパッケージ管理システム。インストールを簡単にやってくれるやつ*
（HomeBrewをインストールしてない方はHomeBrewのインストールが先ですね(*^^*)）

```terminal
$ brew install mysql
```
インストールできたら、まずサーバーを立ち上げます。私はログインしてからやるものだと思い、`ERROR 2013 (HY000): Lost connection to MySQL server during query`エラーに直面してググりまくったり公式ドキュメント読んだりしても解決せず死にかけてましたが、なんてことはない。まず始めにやる作業だったみたいです。

```terminal
$ mysql.server start
```
↑この作業でSUCCESS!と出たらOKです。

次はログイン。ちなみにこの作業を行う時、ディレクトリはLaravelのアプリがある所じゃなくても大丈夫そう（←ここもMAMPと違うところ？）。-uに続けてDB_USERNAME、-hに続けてDB_HOSTを入力。HerokuのSettingsのConfig Varsを見ればよいですね。

```terminal
$ mysql -u DB_USERNAME -h DB_HOST -p
```
↑Enterした後に求められるパスワードも同様にDB_PASSWORDを。

ログインすると、プロンプトが`>mysql`に変化します。
まず、DBを選択します↓。データベース名がわからなくなってしまったら、Heroku > Settigns > Var Configsを参照しましょう。

```terminal
use データベース名;
```
↑これをしないと`No database selected`というエラーになってしまいます。もしくは先ほどMySQLにログインした時に、-pの後にDB名を入れておくっていう手もあるみたいです。

これでHerokuのClearDBがターミナルからでも操作できるようになりました。
めでたし、めでたし。

#余談
MySQLを使い始めるのに必要そうなコマンドを少しメモって終わりたいと思います。

テーブルの一覧を見たい時は↓

```terminal
show tables;
```
あるテーブルのカラムを見たい時は↓

```terminal
desc テーブル名;
```
↑descって読みづらくて覚えにくいですが、descriptionの略みたいです。