今回はLaravel Sail環境にphpMyAdminを使えるようにします。
Laravel Sailは、デフォルトでMySQLが使えるようになっています。ただそのままでは、視覚的にテーブルを見たりすることができません。
不便なので、phpMyAdminを使えるようにして、ブラウザ上でデータベースを確認できるようにしておきます。
動画編もあります↓↓↓
Laravel SailでphpMyAdminを使えるようにする方法を分かりやすく解説
こちらの記事で解説しているとおり、Docker環境では、作成したアプリケーションを実行するのに必要なMySQLやMailHog, Redisといったツールを、各コンテナで動かします。
各プロジェクトで使用するコンテナ情報は、プロジェクト直下のdocker-compose.ymlファイルの中に入っています。今回は、このdocker-compose.ymlを編集して、phpMyAdminを使えるようにしていきます。
手順を説明しますね。
① Laravel Sailをとめておく
まずはUbuntu上で ./vendor/bin/sail stop を実行し、起動しているLaravel Sailを止めておきます。
エイリアス設定を変更した場合には、 sail stop と入れます。
エイリアスの設定方法は下記記事で説明しています。
② docker-compose.ymlファイルを編集
次にプロジェクトの中のdocker-compose.ymlファイルを開きます。
ファイルの中に、50行目あたり(!バージョンや環境によって、行数は違う可能性があります)、mysqlの設定の後に、phpMyAdmin用の設定を加えます。インデントの位置や入れる場所によってエラーになるので、気を付けてください。
1 2 3 4 5 6 7 8 9 10 11 12 |
phpmyadmin: image: phpmyadmin/phpmyadmin links: - mysql:mysql ports: - 8080:80 environment: MYSQL_USERNAME: '${DB_USERNAME}' MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}' PMA_HOST: mysql networks: - sail |
【追加したときのファイル(赤枠が追加部分です)】
「services.phpmyadmin.environment must be a mapping」と出た場合、スペースやタグが正しく入っているか確認してください。PMA_HOST: mysql については、コロン(:)のあとにスペースが入るようにしましょう。
「services.phpmyadmin.links.0 must be a string」と出た場合、mysql:mysqlについて、コロン(:)のあとにスペースがないようにしましょう。
ややこしいのですが、ご留意ください。
不安な場合は、上記のコードをそのまま貼り付けてくださいね。コード部分をダブルクリックすると、コピー可能になります。
③.envの編集
プロジェクトフォルダ内の.envファイルを開きます。データベースの設定を確認しておきます。
デフォルトで下記のようになっています。
DB_USERNAMEとDB_PASSWORDは、後でログインする時に必要な情報です。
1 2 3 4 5 6 |
DB_CONNECTION=mysql DB_HOST=mysql DB_PORT=3306 DB_DATABASE=test_app DB_USERNAME=sail DB_PASSWORD=password |
なおデフォルトのDB_DATABASEは、Laravel10ではプロジェクト名でしたが、Laravel11では「Laravel」となっています。
④Laravel Sailの起動
ファイルを保存後、再びUbuntuに戻り、 ./vendor/bin/sail up -d を実行して、Laravel Sailを起動します。
これによって、docker-compose.ymlファイルをもとに、プロジェクトが起動します。初回は下記のような画面になります。
pulled とありますが、これは、イメージをインストールしているためです。image(イメージ)と聞くと画像を連想してしまうかもしれませんが、イメージは、画像ではありません。
イメージとは、正確に言うと、コンテナを起動するための元となるファイルシステムと、実行するプログラムをまとめたものです。
が、説明がややこしくなってしまうので、「コンテナの中に入れる元データのようなもの」と考えておいてください。プロジェクト内のコンテナは、このイメージを使って作成されます。
なお2回目以降は、すでにイメージがあるため、起動はより早くなります。
⑤ ブラウザでphpMyAdminを確認する
ブラウザで http://localhost:8080/ を表示すると、次のようにphpMyAdminが出てきます。
ユーザー名とパスワードをいれて、ログインしてみましょう。デフォルトでは、ユーザ名はsail, パスワードは passwordです。
エラー対策:MySQL サーバにログインできません と出る場合
sail downでsailをとめた後、.envファイルのDB_HOST=mysqlを DB_HOST=localhostに変更してください。その後、再度 ./vendor/bin/sail up -d でsailを起動してください。
さいごに
ここまででLaravel Sailを使った開発環境ができました。
なおユーザーインターフェースやエラーメッセージの日本語化や、時刻等の初期設定の変更など、行っておいた方が良い設定があります。
下記の記事の「Laravelの初期設定をする」を参考にすすめてください。
このあとの記事では、Laravel Breezeを使って認証機能(ユーザー登録、ログイン画面)をつけていきます。Laravel Viteの設定方法などもご紹介していきます。
コメント
MySQL サーバにログインできない場合に上記を試しても、ログインできない方はどうやって解決しましたか?
解決いたしました。
networks:
– sail
が抜けていたことが原因でした。
私もPhpMyadminにログインできません
DB_HOST=localhostに変更しました
mysqli::real_connect(): (HY000/1045): Access denied for user ‘root’@’172.18.0.7’ (using password: YES)
因みに書籍も買いました
こちら、phpMyAdminがMySQLデータベースに接続しようとした際に、ユーザー名やパスワードが間違っているか、あるいはユーザーに対してリモートからの接続権限が設定されていないことを示しています。
詳細な状況が分からないと何ともいえませんが、docker-compose.ymlでスペルミスやインデントミスをされるケースがわりとあったりします。今一度設定を見直してみてください。
変更を加えたら、再度sailを起動しなおしてくださいね。