1. Docker Compose の設定確認
docker-compose.yml
ファイルで MySQL のポートが適切に公開されていることを確認してください。以下は一般的な例です:下記のように3306 をポートとして公開してないと、docker 外のネットワークからIP接続できないので、下記の設定となっているか確認してください。
version: '3.8'
services:
wordpress:
image: wordpress:latest
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: example
WORDPRESS_DB_NAME: wordpress
depends_on:
- db
db:
image: mysql:5.7
ports:
- "3306:3306" # MySQL のポートを公開
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: wordpress
上記の設定では db
サービスが MySQL をホストしており、ポート 3306
が公開されています。
2. コンテナの起動
以下のコマンドでコンテナを起動します。
docker-compose up -d
コンテナが起動したことを確認するために以下を実行してください
docker ps
22e34857cd5d mysql:latest "docker-entrypoint.s…" 4 days ago Up 4 days 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp
MySQL コンテナがリストに表示され、3306/tcp
がホストにマッピングされているか確認します。
3. DBeaber の設定
DBeaber をインストールします。ここは割愛します。
アドレスはポートを公開していあるので物理サーバーのアドレスでいいです。

必要なドライバーをダウンろーづするように促されます。

テスト接続してOKなら接続できるはずです

接続がうまくいけば下記のようにwordpress のDBにログインできるはずです

4. Docker 内部の MySQL への接続確認
接続がうまくいかない場合、以下の点を確認してください:
a.FWの設定
ファイアウォールやセキュリティソフトがポート 3306
の接続をブロックしていないか確認してください。
c. MySQL ユーザー権限の確認
Docker 内の MySQL に直接アクセスして、ユーザー権限を確認します。下記のコマンドでdocker をインストールしてあるサーバでdocker のmysql にログインします
docker exec -it コンテナID mysql -uroot -p
MySQL 内で以下のコマンドを実行し、リモート接続を許可します。
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)