您需要了解一些关于 TCP/IP 的知识才能了解这里发生的事情。127.0.0.1
每个 TCP/IP 堆栈(实现)在地址(对于 IPv4)或::1
(对于 IPv6)下都有内部环回接口。这使得在不知道它的 TCP/IP 地址(或者即使它没有)的情况下访问本地机器上的堆栈变得容易。
然后,参与 TCP/IP 网络的每台机器都需要一个在该网络中已知的地址(在您的情况下192.168.1.3
)。当您在本地计算机上工作时,无论您使用的是公共 IP 地址还是环回接口都没有关系。第三个选项是localhost
解析为环回接口的名称。但请注意:这取决于操作系统是否以 IPv4 或 IPv6 变体结尾。
如您所知,您可以为用户指定主机,这决定了它可以从哪个主机连接。而且这里user@localhost
和user@127.0.0.1
(或user@::1
)不是同一个主机。为了用户的方便,MySQL 终端隐含地将 localhost 和环回 IP 地址视为相同,但其他客户端则不这样做。这里提到的绑定地址通常根本不涉及。这适用于此处不相关的特殊情况。在超过 10 年的时间里,我从来没有为 MySQL 设置绑定地址。
更新:我希望反对者对他们的行为发表评论,以表明我的回答是否需要改进,或者他们只是无知。