開発を進めていると、「Dockerで立ち上げたデータベースに手元のSQLクライアントから直接アクセスしたい」という場面、よくありますよね。GUIでテーブル構成を確認したり、サクッとクエリを試したりできると非常に便利です。
今回は、Docker環境で動かしているDBへ、外部のSQLクライアント(例:DBeaverやTablePlus)を使って接続する方法を分かりやすく解説していきます。
[目次を開く]
1. Docker環境の前提を確認する
まずは、現在のDocker環境を把握しましょう。確認すべきポイントは以下の通りです。
- 使用しているDBの種類(例:MySQL、PostgreSQLなど)
- コンテナ名
- ポート番号(ホスト側に公開されているか)
- ユーザー名とパスワード
Docker Composeを使っている場合は、docker-compose.ymlファイルを確認しましょう。例えば、MySQLを使用している場合、以下のような設定になっているはずです。
services:
db:
image: mysql:8.0
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: sample_db
MYSQL_USER: user
MYSQL_PASSWORD: userpass ここでは、ホスト側のポート3306がコンテナのMySQLにマッピングされています。
この「ポートの公開設定」がないと、ホストマシンから接続できないので注意しましょう。
2. SQLクライアントから接続するための情報を整理
接続時に必要な情報をまとめます。
| 項目 | 内容 |
| ホスト名 | localhost または 127.0.0.1 |
| ポート番号 | 3306(例) |
| ユーザー名 | user |
| パスワード | userpass |
| データベース名 | sample_db |
これらをメモしておきましょう。
3. SQLクライアントを設定する
ここでは、DBeaverを例に設定手順を説明しますが、TablePlusやSequel Aceなどでも基本は同じです。
- SQLクライアントを起動
- 新しい接続(New Connection)を作成
- データベースタイプを選択(MySQL、PostgreSQLなど)
- 以下を入力
- Host:
127.0.0.1 - Port:
3306 - Database:
sample_db - Username:
user - Password:
userpass
- Host:
- テスト接続を実行して、問題なければ保存
これで、Docker内で動いているDBにGUIで接続できるようになります!
※DBeaverの場合ドライバのプロパティタブから「allowPublicKeyRetrieval」をtrueに変更する必要があります。
4. よくある接続エラーと対処法
ポートが開いていない
docker-compose.ymlでポートフォワーディングが正しく設定されているか確認しましょう。
ファイアウォールやセキュリティソフト
ローカル環境のファイアウォールやセキュリティ設定によって、ポート接続がブロックされることがあります。必要に応じて許可設定を行いましょう。
コンテナが起動していない
接続先のコンテナが動いているか、docker psコマンドで確認しましょう。
まとめ
Docker上に構築した開発用データベースも、ちょっと設定を確認するだけで手軽にSQLクライアントから接続できるようになります。
GUIツールを活用することで、データベース操作の生産性が一段と向上しますので、ぜひ試してみてください!

