PHP/Laravel

【Laravel6】MAMP環境でMySQLと接続する方法【ハイパー丁寧に解説】

こんにちは、シロウ(@shiro_life0)です。

Laravel6のローカル環境を構築する方法っていくつかありますよね。

僕は以前、Dockerで開発していたのですが、何だか個人レベルの開発ならMAMPで十分かなーと最近思い始めました。笑

ただMAMPのMySQLに接続できずに軽くハマってしまったので、今後ハマる人がいないように接続方法を記しておきます。

【開発環境】

・macOs Catalina 10.15.4
・Laravel Framework 6.18.26
・MAMP 5.7

MAMPのMySQLに接続出来ていない時に出るエラー

「php artisan migrate」を実行して、下記のどちらかのエラーが出ている場合上手くMAMPのSQLと接続出来ていないという状態です。(これ以外のエラーもあるかも)

どっちのエラーもこの記事通りに環境設定をしていけば解決出来ますので、サクサクと進んでいきましょう。

Undefined index: database
SQLSTATE[HY000] [1045] Access denied for user ''@'localhost' (using password: NO) (SQL: select max(`batch`) as aggregate from `migrations`)

phpmyadminのデータベースを確認

まずはphpMyadminを開いて、接続したいデータベース名を確認しましょう。

MAMP

「open webstart page」でMAMPのページを開きます。

MAMPのページ

「TOOLS」の「PHPMYADMIN」をクリックします。

データベース一覧

上記がデータベース一覧です。
接続したいデータベース名を確認しておきましょう。
今回は「sample_project」に接続することにします。

MAMPの環境設定変数を確認する

「open webstart page」で開いたMAMPのページの真ん中の方に下記の「MySQL」があるはずなので、そちらを確認します。

MAMPのページ

.envを編集する

.envファイルは隠しファイルなので、もしかするとデフォルトでは表示されていないかもです。(隠しファイル表示とかでググって見てください。)

.envはデフォルトでは下記のようになっていると思います。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USERNAME=root
DB_PASSWORD=

これをさっき確認した環境変数に書き換えます。
僕の場合は下記の通りです。(「DB_DATABASE」の所は接続したいデータベース名にしてください。今回は「sample_project」としました。)

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=sample_project
DB_USERNAME=root
DB_PASSWORD=root
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock

database.phpを編集する

app/config/database.phpを編集します。

デフォルトでは下記のようになっているはず。

'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),

これをまた、さっき確認した環境変数に書き換えます。
僕の場合は下記の通りです。(「database」の所は接続したいデータベース名にしてください。今回は「sample_project」としました。)

'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'sample_project'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', 'root'),

これにて環境変数の設定は終了です。

「php artisan migrate」で無事実行されることを確認してみましょう。

よし、これでまた開発をサクサクと進めることが出来ますね笑

それではまた(*´ω`*)ノ