エラー内容
# ダンプの取り込み
$ pv your_data.dump | mysql -h dbserver -u user db_name
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
原因
dockerをmysqlで動かしていると、アクセスするときに挙動が異なるようです。
localhost
アクセスするとunix socketで接続するためエラーが発生します。
-
127.0.0.1
アクセスするか、 -
~/.my.cnf
にtcp接続のオプションを追加すればエラーがなくなるようです。
[client]
protocol=TCP
Special Thanks
以下を参考にさせていただきました
開発環境のMySQLをdockerで動かすようにしたときのメモ - takapiのブログ
mysql clientは localhost を指定するとunix socketで接続しようとするので、
mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
mysql -u root -h localhost
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
vim ~/.my.cnf に以下を設定し、localhostを指定したときはtcpで接続するようにする。 (接続時、明示的に127.0.0.1を設定すれば問題ないので任意)