前にLaravelでデータベースを使用する際に、SQLiteを使用する記事を挙げたが、やっぱりMySQLを手元に用意したくなった。
MAMPやLaravel Sailを使えば丸ごと環境を用意できるが、今回はローカルにMySQLを用意して、LaravelプロジェクトのDBとして使えるところまで見ていく。Homebrewを通して、MySQLをローカルへインストールするのでHomebrewを入れていない人は入れておこう。
Homebrew:https://brew.sh/index_ja
参考にプロゲートのリンクを貼ったが、かなりわかりやすいのでそちらも参考にして欲しい。
HomebrewでMySQLを探す
HomebrewをPCへインストールしたら、さっそく、MySQLを入れていこう。MySQLと言っても、いくつかバージョンがあって最新のバージョンは8。
brew search パッケージ名
でHomebrewで取得できるパッケージを表示してくれる。
今回はMySQLを落としてきたいので、ターミナルを開いて、brew search mysql
コマンドを打とう。
brew search mysql
コマンドを入力すると以下のような感じで表示されるはずだ。
なんだが一杯ファイルがあって分からないが、Formulaeに表示されている赤線部分がmysql本体だ。mysql@5.6とかmysql@5.7は@マークの後ろに書いてある通り、mysqlのバージョンを示している。@も何もないmysqlはバージョン8のことだ。
欲しいバージョンのMySQLをインストールする
brew install パッケージ名
でパッケージを取得できるので、自分の望むMySQLを落としてこよう。今回自分は、MySQL5.7を使用していくので、brew install mysql@5.7
とターミナルで入力した。
コマンドを入力して以下のような表示になったらインストール成功だ。
パスの部分はMacによって変わると思う。
PATHを通す
MySQLのインストールに成功したら次はPATHを通しておく。英語でもPATHを通してね的なことが書かれてたので言う通りに。
PATHについてわからなかったら以下の記事も参考にどうぞ。PATHを通すことでmysqlコマンドが使えるようになる。
echo 'export PATH="/opt/homebrew/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc
コマンドをターミナルで入力しよう。
上のコマンドを入力したら、自分の場合はユーザーフォルダ直下の.zshrcファイル(人によってはbashファイルかも)に反映されるはずなので一応確認しておく。
上のコマンドを入力したら、source ~/ .zshrc
コマンドを入力しよう。これでmysqlコマンドが使えるようになるはずだ。
mysqlコマンドが使えるか、mysql --version
で確認しよう。
以下のように表示されればmysqlコマンドが使えるようになったぞ。
ver14.14とか出てくるから一瞬勘違いするが、Distribの後ろに書かれているのがMySQLのバージョンだ。
MySQLサーバーをスタートする
いよいよこれでMySQLが使えるようになったので、さっそくMySQLサーバーをスタートする。
mysql.server start
コマンドでMySQLサーバーをスタートさせよう。Starting MySQLと表示が出てきてSUCCESS!とでてくれば成功だ。
ちなみに、mysql.server status
コマンドでMySQLが動いているかぐ状態がどうなっているかわかるので打ってみよう。
また、mysqladmin ping
コマンドでも状態確認ができる。
mysql.server stop
でサーバーを停止できる。
サーバーが停止している状態で、mysql.server status
を打ってもmysqlが走っていいないことが確認できる。
MySQLにログインする
サーバーが動いているのが確認できたら、MySQLにログインしてみよう。特にパスワード設定などをしていないのでmysql -uroot
コマンドだけでMySQLへと入れる。ちなみに後ろのオプション部分は、 --user root
でも --user==root
でもOKだ。
ログインに成功すると、コマンドプロンプトが以下のようになる。この状態でSQL文を投げて、データベースを操作できるぞ。
この状態で、SHOW DATABASES;
コマンドを打ってデータベースを確認してみよう。MySQLの元々のデータベースが表示されるはずだ。
MySQLから抜け出したかったら、exit
コマンドで抜けられる。
GUIでMySQLを確認する
MySQLを使えるようになったのはよかったけれど、Laravelなどで一々ターミナルからデータベースを見るのは面倒臭い。MySQLと言ったら、やっぱりphpMyAdmin。ただ、ローカルにphpMyAdminを入れるのは結構難しかったので、今回は別の方法で確認していく。
VScodeの拡張機能で確認してみる。
最近知ったやり方だが、個人的にかなり好み。たぶんエディタはVScodeを使っている人が多いと思うが、その拡張機能を使う方法だ。これを使うとVScodeで全て一貫することができて見やすい。ただこの拡張機能MITライセンスというもので、公式でちゃんと?フォローされていないらしい。よくわからないが自己責任でお願いします。有料版もあるみたいだが、無料版で利用します。
使う拡張機能はDatabase Clientという機能。VScode上からこれを検索して、有効にしておく。
有効にすると、左側のバーにDBのアイコンが2つつ以下される。
上がSQL型で下がNoSQL型っぽい、今回はMySQLなので上のアイコンをクリックしよう。
最初はまだ、MySQLへと接続していない状態なので左のタブに出てくる、Create Connectionをクリックしよう。
すると以下の画面になる。MySQL以外にも他のデータベースと接続できる。今回はもちろんMySQLなのでMySQLを選択。
HostやUsername、Portは特にMySQL側でいじってなければそのままで入れるはずだ。Hide System SchemaはMySQLのシステムスキーマなどを表示させるかっていう意味だ。こちらは好みで。
後は、Connectをクリックしよう。
成功すると、上の方にSuccessの表示が出て、左のタブにはデータベースが表示されているはずだ。(※初期スキーマを隠す設定にしていたら出ないはず)
接続に成功したので、さっそく新しくデータベースを作成して、Laravelでmigrateしていこう。
データベースを作成するには左のバーから+ボタンをクリックしよう。
すると、sqlファイルが勝手に表示されるので、[name]の部分を好きな名前にして左上のRun SQLを押そう。
SQLを走らせると、新しいデータベースが作成されるはずだ。
データベースの生成に作成したので、Laravel側からmigateコマンドを走らせよう。その前に.envファイルを修正する。DB_DATABASEのところを作成したデータベース名と合わせておこう。
.envファイルに修正を加えたら、migrateしよう。php artisan migrate
でうまくいけば、データベースに構造が作られるはずだ。
migrationに成功したら、DBアイコンをクリックしよう。おそらく更新しないと反映されないはずなので、Refreshアイコンをクリックしてみよう。
すると、新しいデータベースにテーブルが作成されているはずだ。
テーブルを選択すると、そのページが開かれる。データの中身はないが、ここにデータが反映されていく。
今回は、VScodeの拡張機能を使ったが、以前SQLiteでも確認した、TablePlusを使ってももちろんOKだ。
まとめ
- Homebrewで好きなバージョンのMySQLを探してインストールする。
- MySQLコマンドを使うためにPATHを通す。
- MySQLのサーバーを立ち上げて、MySQLへとログインする。
- VScodeの拡張機能を使ってDBを見やすく表示。(お好みで)
やってることはかなりシンプル。Laravelを学習する時にMAMPやLaravel Sailなどを使って環境構築を使えばそもそもMySQLをローカルに用意する必要はないが、ローカルでMySQLを落として探っているとエラーが出たりそれを解決したりと色々勉強になったので余裕のある人はぜひ試してみてください。