Windows Navicat が Docker の MySQL に接続し、エラー 2003、10060「不明なエラー」を報告します

1. 背景

以前は docker をインストールして MySQL コンテナを実行していました。また、docker で MySQL に接続してデータベースを作成するために navicat を使用していました。しばらく Windows を使用するのをやめて MacOS に切り替えました。その後、Windows コンピュータに戻って、navicat を見つけました。データベースに接続できません。エラーのスクリーンショットは次のとおりです。

(私の問題は解決したため、エラー画像が見つかりません。この画像はエラーを再現するために他の人の画像からコピーしたものです
)ここに画像の説明を挿入します

2. 私は何を試しましたか?

  1. を使用してコンテナに入りますmysql -uroot -pMySQL へのログインは可能ですが、Docker MySQL への外部接続を使用することは不可能であることが判明したため、問題自体はコンテナ内にあるわけではないと推測されます。
  2. インターネット上で Baidu が提供するソリューションのほとんどは、コンソールを使用して MySQL にログインし、root ユーザーが % (すべての IP 接続が許可されている) であるかどうかを確認し、次に権限を構成し、パスワードを変更し、権限を更新します。問題を解決するために、もう一度試してみましたが、最終的な結果は確かに未解決でした。
  3. 次に、インターネットで、Docker マシンの IP を確認しようとしているのを見つけました (Windows が Linux をシミュレートしているため、WLS か何かと呼ばれるようで、それを Docker Desktop に提供して使用できるようにしました)。 Linux マシンは ifconfig を通じて IP をチェックし、navicat のこの IP として IP アドレスを入力しようとしますが、それでも機能しません。この頃にはもう汚い言葉でいっぱいになってしまいました~
  4. 後で信じられなかったので、ポート マッピングをもう一度確認したところ、確かに 3306 が外部 3306 にマッピングされていました。もう信じられませんでした。元の MySQL コンテナを閉じて、もう一度実行することはできませんか? それから、コマンドのセット (マウント ディレクトリは無視します):
docker run -p 3306:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD=123456  -d mysql

この時、行ってみるとコンテナが実行できないことが分かり、びっくりしました~
エラーメッセージはおおよそ以下のようなものでした。

ポートが利用できません: ポート TCP 0.0.0.0:xxxxx を公開しています -> 0.0.0.0:0: listen tcp 0.0.0.0:xxxxx: バインド:アクセス許可で禁止されている方法で
ソケットにアクセスしようとしました。

次に、戻って元々閉じていたコンテナを起動しようとしましたが、起動できないことがわかりました。さて、百度はこの間違いを犯しました。

3.解決する

上記のポートが使用できない理由に基づいて、検索エンジンが見つけた解決策は次のとおりです。
winnatを再起動します

  • 手順:
  1. PowerShell を管理者として実行する
  2. 勝者をやめる
net stop winnat
  1. winnatを開始する
 net start winnat

その後、戻ってコンテナを実行したところ、コンテナは生きていました。

navicat で MySQL に接続したら、うまくいきました。
ここに画像の説明を挿入します
新しく作成したコンテナを削除して、これで終わりです。

おすすめ

転載: blog.csdn.net/qq_17229141/article/details/126478908