21
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

公式MySQLコンテナをDocker for Macで起動した際に外部から接続(リモート)ができないので困った

Last updated at Posted at 2017-01-07

最近、久しぶりにDockerを触ったら、Docker for Macという便利なものになっていたので、ちょっと色々と試してみた。
そこで、起きたのが公式MySQLコンテナをDocker for Macで起動した際に外部から接続(リモート接続)ができないという問題。

$ mysql -u root -p -h 127.0.0.1 --port 3306
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

hostをlocalhost、portを3306としてmysqlに接続しにいこうとしたところエラーが発生。
あまり深く考えていなかったのだが、どのようなport設定で起動されているのか分かっていなかったので、Dockerの状態を確認してみる。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                      NAMES
99999999fac0        mysql               "docker-entrypoint.sh"   8 hours ago         Up About an hour               3306/tcp                 mysql_db_1

確認したところ、上記のように起動されており、少し調べたところhostやportがうまく設定されていなかったっぽい。
そこで、以下のようにdocker-compose.ymlでport部分を指定する

docker-compose.yml
mysql:
  image: mysql
  ports:
    - 127.0.0.1:3333:3306

その後、再起動。

$ docker-compose up
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                      NAMES
99999999fac1        mysql               "docker-entrypoint.sh"   About an hour ago   Up 6 minutes        127.0.0.1:3333->3306/tcp   mysql_db_1

設定した内容で問題なくmysqlに接続することができた。

$ mysql -u root -p -h 127.0.0.1 --port 3333

ただ、これだとDockerコンテナ同士のlinkに少し不具合が出たので、最終的に以下のようにdocker-compose.ymlを修正。

docker-compose.yml
mysql:
  image: mysql
  ports:
    - 3333:3306

その後、再び再起動。

$ docker-compose up
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                      NAMES
99999999fac1        mysql               "docker-entrypoint.sh"   About an hour ago   Up 6 minutes        0.0.0.0:3333->3306/tcp   mysql_db_1

hostの部分が修正されたことが分かる。これで、コンテナ同士のlinkも外部から接続も問題なくできた。

今回の原因は色々とあったものの解決方法のみ備忘録として残しておく。

21
16
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
21
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?