无法连接转发到 3306 的 docker mysql



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

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

如果进行了这些更改,我可以将localhost与127.0.0.1地址连接起来。

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

localhost和127.0.0.1之间的区别是MySQL历史上的一个奇怪之处。通常假设localhost和127.0.0.1是等效的。但是MySQL将主机名";localhost";特别的是,使用它来调用UNIX域套接字接口。这比使用TCP/IP快一点,但当然只有当连接在本地计算机上时才有效。

最新更新