delhi09の勉強日記

技術トピック専用のブログです。自分用のメモ書きの投稿が多いです。あくまで「勉強日記」なので記事の内容は鵜呑みにしないでください。

Dockerコンテナ上のMySQLにホストOSから接続できなくて調査・対応したのでメモ

事象

公式のMySQLのDockerコンテナ上のMySQLにホストOS(Mac)から接続しようとしたところ、以下のようなエラーが発生して接続できなかったので、対応をメモしておく。

・エラーその1

ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (61)

エラーその2

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

原因

1.起動時にポートフォーワード設定が必要

$ docker run --name mysql5.7 -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=dbname -p 3306:3306 -d mysql:5.7

-p 3306:3306が必要だった。

2.接続時に--protocol=tcpオプションが必要

localhostで接続する場合、MySQLクライアントはデフォルトではUnixドメインソケットで通信しようとするが、これだとエラーになってしまうので、--protocol=tcpオプションが必要。

$ mysql -u root -p -h localhost -P 3306 --protocol=tcp

なお、127.0.0.1で接続する場合は上記のオプションは不要。

これでもOK

$ mysql -u root -p -h 127.0.0.1 -P 3306

参考文献

以下の記事を参考にさせて頂きました。

qiita.com
takuya-1st.hatenablog.jp