前提
状態
ここではTablePlusを介してDockerコンテナ上で動作するMySQLサーバにアクセスできない状態を扱います.
サンプルリポジトリではMySQLをDockerコンテナ上で起動しホストマシンの53306ポートにDockerコンテナの3306ポートをポートフォワードしています.(コンテナ名は'mysql_tech_semi_db_1`)
$ docker container port mysql_tech_semi_db_1
3306/tcp -> 0.0.0.0.:53306
このようにGit Bashからはポートフォワードがうまく行っている状態です.
しかしTablePlusを使用して53306ポートで動作するMySQLサーバに接続を試みても以下のようにエラーとなり接続できません.

原因
Windows 10 HomeではDockerはVirtualBox上のVM上で動作しており,Dockerコンテナのポートフォワードの設定をしてもWindows OSのポートとは接続されていないためこの現象が起きます.
解決策
VirtualBoxからVMのポートフォワードを設定することで解決します.
1. VirtualBoxでDefault VMのポートフォワードの設定を変更
VirtualBoxを起動してDefaultという名前のVMの設定を変更します,

ネットワークの設定からポートフォワーディングの設定を開きます.

ポートフォワーディングルールの追加をします.

新しく追加されたRule 1の行を編集していきます.

ここまでの設定が完了したら「OK」を押して順にウィンドウを閉じます.
設定がは反映されるとWindwos Defenderからの警告が出ます.
「アクセスを許可する」をクリックしてください.

2. TablePlusから再接続
先ほどの設定のままTablePlusから「Test」を実行した際に「connection is ok」となることを確認します.

確認できたら「Connect」を実行することでMySQLサーバに接続できます.
TablePlusの操作は割愛しますが「semi」のデータベースを選択すると以下のようにUsersテーブルのみが存在するDBが確認できるかと思います.

前提
状態
ここではTablePlusを介してDockerコンテナ上で動作するMySQLサーバにアクセスできない状態を扱います.
サンプルリポジトリではMySQLをDockerコンテナ上で起動しホストマシンの53306ポートにDockerコンテナの3306ポートをポートフォワードしています.(コンテナ名は'mysql_tech_semi_db_1`)
$ docker container port mysql_tech_semi_db_1 3306/tcp -> 0.0.0.0.:53306このようにGit Bashからはポートフォワードがうまく行っている状態です.
しかしTablePlusを使用して53306ポートで動作するMySQLサーバに接続を試みても以下のようにエラーとなり接続できません.
原因
Windows 10 HomeではDockerはVirtualBox上のVM上で動作しており,Dockerコンテナのポートフォワードの設定をしてもWindows OSのポートとは接続されていないためこの現象が起きます.
解決策
VirtualBoxからVMのポートフォワードを設定することで解決します.
1. VirtualBoxでDefault VMのポートフォワードの設定を変更
VirtualBoxを起動して
Defaultという名前のVMの設定を変更します,ネットワークの設定からポートフォワーディングの設定を開きます.
ポートフォワーディングルールの追加をします.

新しく追加された
Rule 1の行を編集していきます.ここまでの設定が完了したら「OK」を押して順にウィンドウを閉じます.
設定がは反映されるとWindwos Defenderからの警告が出ます.
「アクセスを許可する」をクリックしてください.
2. TablePlusから再接続
先ほどの設定のままTablePlusから「Test」を実行した際に「connection is ok」となることを確認します.
確認できたら「Connect」を実行することでMySQLサーバに接続できます.
TablePlusの操作は割愛しますが「semi」のデータベースを選択すると以下のようにUsersテーブルのみが存在するDBが確認できるかと思います.