WSL2のDocker環境でMySQLをLaravelとDBeaverから接続する方法
- 2026年8月27日
- AI
WSL2上でLaravelの開発環境をDockerで構築する場合、MySQLもDockerコンテナで動かす構成がよく使われます。
今回は、MySQLのポートを「3307」に変更した場合に、
WSL2側のLaravelとWindows側のDBeaverから接続する方法を紹介します。
Docker Composeの設定
compose.ymlを以下のようにします。
services:
app:
build: .
ports:
- “8080:80”
depends_on: - db
db:
image: mysql:8.0
environment:
MYSQL_DATABASE: laravel
MYSQL_USER: laravel
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: root
ports:
- “3307:3306”
ここで重要なのが、
“3307:3306”
という設定です。
左側の「3307」がホスト側のポート、
右側の「3306」がMySQLコンテナ側のポートです。
つまり、
Windows / WSL2 → 3307 → MySQLコンテナ → 3306
という構成になります。
LaravelからMySQLへ接続
LaravelはWSL2のDockerコンテナ内で動作しているため、MySQLのサービス名「db」を指定します。
.env
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=password
ここでDB_PORTを「3307」にしないのがポイントです。
LaravelとMySQLはDocker内で直接通信するため、
Laravelから見たMySQLのポートはコンテナ側の「3306」です。
Windows側のDBeaverから接続
Windows上で動作しているDBeaverから接続する場合は、
ホスト側に公開した「3307」を指定します。
DBeaverの設定例:
Host : localhost
Port : 3307
Database : laravel
Username : laravel
Password : password
DBeaverからは、
localhost:3307
に接続すると、DockerコンテナのMySQL「3306」へ接続されます。
まとめ
MySQLのポートを3307に変更した場合でも、
接続元によって指定するポートが異なります。
Laravel
→ DB_HOST=db
→ DB_PORT=3306
WindowsのDBeaver
→ Host=localhost
→ Port=3307
「3307:3306」の左側はホスト側、
右側はコンテナ側のポートです。
そのため、Dockerコンテナ間の通信では「3306」、
Windows側のDBeaverから接続するときは「3307」を指定します。
WSL2+Docker環境でMySQLに接続できない場合は、
まず「どこからMySQLへ接続しているのか」と「ホスト側・コンテナ側のどちらのポートなのか」を確認すると、原因を切り分けやすくなります。
木曜日担当:nishida
nishida at 2026年08月27日 01:00:00