无法连接转发到 3306 的 docker mysql

Can not connect docker mysql that's forwarding to 3306

当我尝试连接到 docker MySQL 运行 并转发到我的本地 TCP:3306 时,我得到以下答案

mysql -u root -pPASSWORD
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

但是当我这样做时 mysql -u root -pPASSWORD -h127.0.0.1 它连接得很好。 有什么线索吗?

[更新]

考虑到评论和这个 我创建 ~/.my.cnf 具有此内容

[Mysql]
user=root
password=yourpass
host=127.0.0.1
port=3306

进行这些更改后,我可以将本地主机连接到 127.0.0.1 地址。

如果您没有使用 -h(或 .my.cnf 中的 host 指令)指定主机,则 MySQL 默认连接到本地主机。与本地主机的连接使用 UNIX 域套接字接口,而不是 TCP/IP。所以它没有连接到 TCP/IP 端口,因此不会转发到您的 docker 容器。

localhost 和 127.0.0.1 之间的区别是 MySQL 的历史怪事。通常假定 localhost 和 127.0.0.1 是等价的。但是 MySQL 将主机名“localhost”视为特殊主机名,使用它来调用 UNIX 域套接字接口。这是 a bit faster than using TCP/IP,但当然只有在本地计算机上连接时才有效。