Laravelのデータベース設定とマイグレーション完全ガイド|MAMP・MySQLで接続する方法
Laravelの環境構築を進めていると、意外と早い段階でぶつかるのがデータベース接続の設定です。
「Laravel自体は起動できたのに、データベースだけエラーになる……」
実際に環境構築をしていると、こんな場面に遭遇することがあります。
今回は、Mac環境でMAMP・MySQL・phpMyAdmin・Laravelを使い、Laravelからデータベースへ接続できる状態を作っていきます。
単に設定項目を並べるだけではなく、実際に画面を操作しながら確認していくようなイメージでまとめました。
Laravelをこれから学習する人や、環境構築でデータベース接続エラーに悩んでいる人は、ぜひ一緒に進めてみてください。
Laravelのデータベース設定で最初に確認したいこと
Laravelの初期設定にはいくつかの作業がありますが、その中でも早めに確認しておきたいのがデータベース接続です。
Laravelでアプリケーションを作る場合、ユーザー情報や投稿データなど、さまざまな情報をデータベースへ保存することになります。
そのため、アプリケーション本体が正常に動いていても、データベースとの接続設定が間違っていると、後の開発でエラーが発生します。
特にチェックしたいのは、次の項目です。
- データベースのホスト名
- データベースのポート番号
- データベース名
- データベースのユーザー名
- データベースのパスワード
- Laravel側の.env設定
ここが一致しているかどうかを確認しながら進めると、原因を見つけやすくなります。
MAMPでLaravel用のMySQLを起動する
今回はMac環境でMAMPを利用してデータベースを準備していきます。
まずはLaunchpadからMAMPを起動します。
MAMPが起動したら、データベースサーバーであるMySQLが動作しているかを確認します。
今回の環境では、ApacheとMySQLがそれぞれ次のようなポート番号になっています。
- Apache:80
- MySQL:3306
ポート番号は環境によって異なる場合があります。
そのため、「自分の環境では何番になっているのか」をMAMPの設定画面で確認しておくことが重要です。
ここでMAMPのスタートボタンをクリックします。
ApacheとMySQLが正常に起動すれば準備完了です。
この瞬間は、Laravelの環境構築をしている感覚が少しずつ形になってくるので、個人的には結構ワクワクするところです。
phpMyAdminを開いてMySQLを管理する
MAMPを起動したら、次にphpMyAdminを開きます。
phpMyAdminは、ブラウザからMySQLのデータベースを操作できる管理ツールです。
MAMPの専用ページから「Tools」などのメニューを確認すると、phpMyAdminへのリンクがあります。
そこをクリックすると、データベースを管理する画面が表示されます。
最初は英語表示になっている場合があります。
その場合はLanguageから日本語を選択しておくと、これからの操作がかなり分かりやすくなります。
phpMyAdminでLaravel用データベースを作成する
ここからLaravelで使用するデータベースを作っていきます。
phpMyAdminの画面左側にある「新規作成」からデータベースを作成します。
今回はLaravelの学習用として、Laravelアプリケーションから利用するデータベースを作成します。
データベース名は、Laravel側の設定でも使用することになるため、自分が分かりやすい名前にしておくとよいでしょう。
例えば、次のような名前です。
laravel_app
照合順序については、特別な要件がなければ環境に合わせて設定します。
設定が完了したら「作成」をクリックします。
すると、phpMyAdminの左側に新しいデータベースが表示されます。
これでLaravelが利用するデータベース本体が準備できました。
Laravel用のMySQLユーザーを作成する
続いて、データベースへアクセスするためのユーザーを作成します。
phpMyAdmin上部にある「特権」をクリックし、新しいユーザーアカウントを追加します。
ここでは、LaravelからMySQLへ接続するときに使用するユーザー名とパスワードを設定します。
例えば、次のような構成です。
- ユーザー名:laravel_user
- ホスト名:%
- パスワード:設定したパスワード
今回の学習では簡単なパスワードを設定していますが、これは実際のサービスでは避けるべき設定です。
本番環境では、推測されにくい強力なパスワードを使用してください。
データベースへの権限を設定する
ユーザーを作成するだけではなく、そのユーザーが対象データベースを操作できるように権限を設定します。
今回作成したLaravel用データベースに対して、必要な権限を付与します。
学習環境ではすべての権限を付与して動作確認する方法もありますが、本番環境では必要最小限の権限にすることが基本です。
設定が完了したら、画面下部の実行ボタンをクリックします。
「新しいユーザーを追加しました」といったメッセージが表示されれば、ユーザー作成は完了です。
Laravelの.envファイルでデータベース接続を設定する
ここからがLaravel側の設定です。
phpMyAdminでデータベースを作っただけでは、Laravelはそのデータベースの存在を知りません。
そこで、Laravelプロジェクトの.envファイルにデータベース接続情報を設定します。
Visual Studio CodeなどのエディタでLaravelプロジェクトを開きます。
プロジェクトの中には、さまざまなファイルやフォルダがあります。
その中から.envファイルを探します。
.envとは何か?
.envは、Laravelなどのアプリケーションで使用する環境変数を設定するファイルです。
データベース接続情報だけではなく、アプリケーションの環境や各種サービスの設定などにも利用されます。
Laravelでは、この.envファイルにデータベースの接続情報を記述することで、アプリケーションからMySQLへ接続できるようにします。
Laravelのデータベース接続設定
.envファイルには、データベース関連の設定が用意されています。
代表的な項目は次のとおりです。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_app
DB_USERNAME=laravel_user
DB_PASSWORD=設定したパスワード
ここで重要なのは、phpMyAdminで作成した情報とLaravelの.envに記述した情報を一致させることです。
例えば、phpMyAdminでデータベース名をlaravel_appにしたのであれば、Laravel側も次のようにします。
DB_DATABASE=laravel_app
ユーザー名も同様です。
DB_USERNAME=laravel_user
パスワードも、MySQLユーザー作成時に設定したものと一致させます。
Laravelのデータベース接続で確認したい設定項目
データベース接続でエラーが出た場合、まず次の項目を確認してみましょう。
- DB_CONNECTION:MySQLになっているか
- DB_HOST:接続先ホストが正しいか
- DB_PORT:MySQLのポート番号と一致しているか
- DB_DATABASE:作成したデータベース名と一致しているか
- DB_USERNAME:MySQLユーザー名と一致しているか
- DB_PASSWORD:設定したパスワードと一致しているか
特に初心者のうちは、データベース名・ユーザー名・パスワード・ポート番号のどこかを間違えているケースがあります。
一つずつ確認していけば、原因を切り分けやすくなります。
Laravelのマイグレーションでデータベース接続を確認する
.envファイルの設定が終わったら、実際にLaravelからデータベースへ接続できるか確認してみます。
ここで登場するのが、Laravel開発ではおなじみのマイグレーションです。
ターミナルを開き、Laravelプロジェクトのディレクトリへ移動します。
現在いる場所を確認したい場合は、Macのターミナルで次のコマンドを利用できます。
pwd
Laravelプロジェクトのディレクトリに移動したら、マイグレーションを実行します。
php artisan migrate
ここでLaravelがデータベースへ接続し、必要なテーブルを作成できれば成功です。
php artisan migrateとは?
php artisan migrateは、Laravelのマイグレーションを実行するためのコマンドです。
マイグレーションは、簡単にいうとデータベースのテーブル構造をコードで管理する仕組みです。
例えば、ユーザー情報を保存するusersテーブルや、商品情報を保存するproductsテーブルなどを、Laravelのマイグレーションファイルから作成できます。
データベースを直接操作するのではなく、テーブル構造をコードとして管理できるため、チーム開発でも非常に便利です。
Laravelのマイグレーションテーブルが作成されたら成功
マイグレーションを実行すると、Laravelによってデータベースにいくつかのテーブルが作成されます。
phpMyAdminを開いて、先ほど作成したLaravel用データベースを確認してみましょう。
すると、先ほどは何も入っていなかったデータベースの中に、テーブルが作成されていることが確認できます。
ここでテーブルが表示されていれば、LaravelからMySQLへの接続は正常にできています。
つまり、
- MAMPでMySQLを起動
- phpMyAdminでデータベースを作成
- MySQLユーザーを作成
- Laravelの.envに接続情報を設定
php artisan migrateを実行- phpMyAdminでテーブルを確認
という一連の流れが無事につながったことになります。
Laravelのデータベース接続エラーが出たときの対処法
もしphp artisan migrateを実行したときにエラーが出ても、焦る必要はありません。
Laravelの環境構築では、データベース接続に関するエラーは比較的よく遭遇するポイントです。
まずは次の項目を順番に確認してみてください。
MySQLが起動しているか確認する
MAMPを起動していても、MySQLが停止している可能性があります。
MAMPの画面を開いて、MySQLが起動状態になっているか確認します。
DB_PORTを確認する
次に確認したいのがポート番号です。
一般的なMySQLでは3306が使われますが、MAMPの環境によっては別のポート番号が設定されている場合があります。
その場合、.envのDB_PORTも実際のMySQLポートに合わせる必要があります。
データベース名を確認する
phpMyAdminで作ったデータベース名と、.envのDB_DATABASEが完全に一致しているか確認します。
スペルミスや大文字・小文字など、細かな違いが原因になることもあります。
ユーザー名とパスワードを確認する
MySQLユーザーを作成したときに設定したユーザー名とパスワードを確認します。
Laravelの.env側に入力した値と一致しているかチェックしましょう。
.env変更後に設定キャッシュを確認する
Laravelでは環境によって設定情報がキャッシュされている場合があります。
.envを変更したのに設定が反映されない場合は、設定キャッシュをクリアする方法もあります。
php artisan config:clear
その後、改めてマイグレーションを実行します。
php artisan migrate
環境構築では「設定を変更したのに反映されない」という状況もあるため、覚えておくと便利です。
Laravelの初期設定は「動けばOK」ではなく仕組みを理解する
今回、実際にLaravelとMySQLを接続してみると、単純に見えて意外と確認するポイントが多いことに気づきます。
MAMPを起動するだけではLaravelからデータベースを利用できません。
phpMyAdminでデータベースを作り、ユーザーを準備し、Laravel側の.envに接続情報を記述する必要があります。
そして最後にphp artisan migrateを実行することで、Laravelからデータベースへ接続できるかを実際に確認できます。
個人的には、この一連の作業を一度経験しておくと、Laravelの仕組みがかなり見えやすくなると思います。
最初は「DB_HOSTって何?」「3306って何の数字?」という状態でも問題ありません。
実際にエラーを経験しながら一つずつ確認していくと、少しずつ意味が分かってきます。
Laravelのデータベース設定を終えてみて
今回の作業では、LaravelとMySQLを接続して、マイグレーションまで実行しました。
作業だけを見ると、
「データベースを作って、設定を書いて、コマンドを実行した」
というシンプルな内容です。
でも、実際にターミナルでコマンドを入力して、phpMyAdminを更新した瞬間にテーブルが表示されると、「ちゃんとLaravelとデータベースがつながった!」という実感があります。
環境構築では、画面に何も表示されない状態から始めることも多いので、こうやって一つずつ動作確認できるのは結構楽しいところです。
特にLaravelをこれから学ぶのであれば、単に手順を丸暗記するのではなく、
- MAMPは何をしているのか
- MySQLは何をしているのか
- phpMyAdminは何のためにあるのか
- .envには何を書くのか
- マイグレーションとは何なのか
php artisan migrateで何が起きているのか
という部分まで意識しておくと、今後のLaravel学習がかなり楽になります。
Laravelのデータベース設定・マイグレーションまとめ
最後に、今回の作業をまとめておきます。
- MAMPを起動してMySQLを開始する
- phpMyAdminを開く
- Laravel用のデータベースを作成する
- データベースへアクセスするMySQLユーザーを作成する
- 必要な権限を設定する
- Laravelプロジェクトの.envファイルを開く
- DB_CONNECTION、DB_HOST、DB_PORTを設定する
- DB_DATABASE、DB_USERNAME、DB_PASSWORDを設定する
- ターミナルからLaravelプロジェクトへ移動する
php artisan migrateを実行する- phpMyAdminでテーブルが作成されたことを確認する
この流れを押さえておけば、Laravelのデータベース初期設定で迷ったときにも、どこを確認すればいいのか分かりやすくなります。
Laravelの環境構築でエラーが出ると、最初は「何が悪いのか分からない!」となりがちです。
でも、今回のようにMAMP → MySQL → phpMyAdmin → .env → Laravel → マイグレーションという流れを頭の中でつなげておけば、エラーが発生したときも原因を一つずつ切り分けられるようになります。
Laravelで本格的なアプリケーションを作る前に、まずはこのデータベース接続をしっかり確認しておきましょう。







0 件のコメント:
コメントを投稿