LoginSignup
33
24

More than 3 years have passed since last update.

dockerで立てたMySQLコンテナに外部から接続できずにハマった時の話

Posted at

概要

dockerを触り始めてMySQLのコンテナを立ててみたものの、Macのターミナルから接続できずに結構ハマった話。似たような事象に陥ってる人が、もしこれで解消できる人がいればと思い記事にしました。

結論

コンテナの3306ポートをEXPOSEしていなかった。docker runで-Pオプションを付けて実行すると上手く接続できた。

before
$ docker run -d --name test-db -e MYSQL_ROOT_PASSWORD=password mysql/mysql-server
after
$ docker run -d --name test-db -e MYSQL_ROOT_PASSWORD=password -P --expose=3306 mysql/mysql-server

経緯とか

症状

作成したdockerコンテナに対して、Macのターミナルからmysqlコマンドで入ろうとしても、以下の通りエラー

$ mysql -h 127.0.0.1 -u user -p
Enter password: 
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (61)

エラー内容的にそもそもIPアドレスがわからないと言われている。
ネットで上手く接続できている人たちの記事を見ると、docker ps時のPORTSに0.0.0.0があることに気がつく。というわけで、以下の記事を参考にEXPOSEしてみた。

MySQLに外部接続できない時のチェックポイント

EXPOSEする前
$ docker ps
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS                       PORTS                                               NAMES
35b706562745        mysql/mysql-server   "/entrypoint.sh mysq…"   About an hour ago   Up About an hour (healthy)   3306/tcp, 33060/tcp                                 test-db
EXPOSEした後
$ docker ps
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS                       PORTS                                               NAMES
42a9d040091a        mysql/mysql-server   "/entrypoint.sh mysq…"   14 minutes ago      Up 14 minutes (healthy)      0.0.0.0:3306->3306/tcp, 0.0.0.0:32772->33060/tcp    test-db

EXPOSE後のPORTS欄を見ると0.0.0.0:3306->3306/tcpとなっており、ローカルホストから接続できていることがわかる。

コピペで適当に作業していると何かあったときにハマりますね...

33
24
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
33
24