4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

connection refused エラー、データベースに接続できなかった

Posted at

はじめに

dial tcp 127.0.0.1:3306: connect: connection refused
というエラーがDockerで立てたMySQLコンテナにバックエンドから登録処理をしようとした時に出ました。

どうやらlocalhostのポート番号3306へのアクセスが拒否されているようです。

今回、docker-compose.ymlでGoのバックエンドコンテナとMySQLコンテナが立ち上がるようにしています。

原因

バックエンドの.envを以下のように記述してしました。

.env
MYSQL_HOST=127.0.0.1 # ここが原因
MYSQL_PORT=3306
MYSQL_USER=your_user
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=your_database

.envファイルを見てみるとMySQL_HOST127.0.0.1と書いていました。
バックエンドもコンテナで立てているので、コンテナ間通信ではdocker-compose.ymlで定義したコンテナ名を指定する必要がありました。

解決方法

.env
MYSQL_HOST=your_mysql # ここをdocker-compose.ymlのコンテナ名にする
MYSQL_PORT=3306
MYSQL_USER=your_user
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=your_database

127.0.0.1ではなくdocker-compose.ymlで書いたコンテナ名にすることでエラー解決することができました。

.envを変更した後は、コンテナを立ち上げ直すのを忘れないようにしましょう。

補足説明:

  • Docker環境では、各コンテナは独立した環境として動作します。
  • 127.0.0.1localhostは自分自身、つまりそのコンテナ自身を指すため、別のコンテナのMySQLには接続できなかったようです。

さいごに

この記事が誰かの役に立てば幸いです。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?