Laravel8.xで、公式ドキュメントに沿って立ち上げたアプリのDBにMySQLWorkBenchで接続したときの流れをまとめました。
【前提】
・公式ドキュメントにてプロジェクト立ち上げ済み
・http://localhostで表示を確認できている
Laravel8.Xで立ち上げたアプリのDBにMySQLWorkBenchで接続する方法
結論から話すと、以下の流れでOKです。
・①:MySQLにアクセスするポートを変更
・②:.envファイルで接続情報を確認
・③:接続
それぞれについて解説します。
①MySQLにアクセスするポートを変更
まずは、MySQLにアクセスするポートを変更しておきましょう。
しなくてもいいのですが、デフォルトの「3306」は意外と他のプロジェクトで使ってたりすることもあるので、念のため変更します。
(かぶっていると、MySQLにログインできないです。Access Deniedで怒られます)
docker-compose.ymlで変更しましょう。
以下のコードのportsの部分を編集します。
mysql:
image: 'mysql:8.0'
ports:
- '${FORWARD_DB_PORT:-3310}:3306'
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
volumes:
- 'sailmysql:/var/lib/mysql'
networks:
- sail
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
retries: 3
timeout: 5s
変更前
${FORWARD_DB_PORT:-3306}
変更後
${FORWARD_DB_PORT:-3310}
ちなみに、${FORWARD_DB_PORT:-3310}のあとの3306は変更しなくてもいいの?と思うかもですが、こちらはコンテナのポートになるので、気にしなくてOKです。
変更したら、コンテナのMySQLを再起動しておきましょう。
②.envファイルで接続情報を確認
docker-compose.ymlでは、直にアクセス情報は書かれていません。
次のような感じで、環境変数で書かれています。
(DB_PASSWORDとか)
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
で、DB_PASSWORDとかがどこに書かれているかですが、「.env」にかかれています。
プロジェクトのルートディレクトリに移動して、以下のコマンドを叩きましょう。
ファイルの中身を見ることができます。
less .env
ズラズラっと出てきますが、DBのところをチェックしてみましょう。
接続情報を確認できますね。
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=sail
DB_PASSWORD=password
ちなみに、本番環境にデプロイ(リリース)するときは、このような簡単なパスワードやユーザーは設定しないようにしてくださいね。
各環境ごとにenvファイルを用意するのがオススメです。
③接続
ポートも設定して、接続情報も確認できたのであとは接続です。
MySQLWorkBenchの接続設定を以下のようにしましょう。
右下のtest connectionを選択します。
すると、パスワードを求められるので先程確認したパスワード(password)を入力します。
以下のようになっていれば成功です。
今回は以上です。
お疲れさまでしたm(_ _)m