ホームページ >バックエンド開発 >Golang >Docker の Go アプリが Mac 上の MySQL に接続できないのはなぜですか?

Docker の Go アプリが Mac 上の MySQL に接続できないのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-29 07:07:02614ブラウズ

Why Can't My Go App in Docker Connect to MySQL on my Mac?

エラー: "dial tcp 127.0.0.1:3306: connect: connection requested" Docker の Go から MySQL に接続するとき

Go と Docker を使用して Mac 上で実行されている MySQL サーバーに接続しようとすると、「dial tcp 127.0.0.1:3306: connect: connection failed.」というエラー メッセージが表示されます。このエラーは、Navicat for MySQL を使用して localhost:3306 上のデータベースに正常に接続したにもかかわらず発生します。

このエラーは、Mac での Docker の分離の性質が原因で発生します。 Docker は表面下の仮想マシン (VM) で実行されるため、ホスト マシンが提供するサービスに直接アクセスすることが困難になります。

この問題を解決するには、docker.for.mac.localhost を使用するように接続文字列を調整します。 127.0.0.1:3306 ではなく :3306。この特別なホスト名により、Docker コンテナとホスト マシン間の通信が可能になります。

修正された Go コードは次のようになります。

<code class="go">db, err = sql.Open("mysql", dbUser+":"+dbPassword+"@tcp(docker.for.mac.localhost:3306)/"+dbName)</code>

この修正により、接続の問題が解決され、Docker コンテナとホスト マシン間の通信が可能になります。 Go アプリケーションとホスト マシン上で実行されている MySQL サーバー。

以上がDocker の Go アプリが Mac 上の MySQL に接続できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。