为什么我的 MySQL IP 地址与物理服务器 IP 地址不同,它是 运行?

Why is my MySQL IP address different than physical server IP it is running?

这可能是一个非常愚蠢的问题,但我*是 MySQL 的新手,我刚刚发现 MySQL 有不同的 ip,即 127.0.0.1 及其主机名 (localhost) 比 192.168.1.3 的机器 ip 和机器主机名 ceres,为什么会这样?

我在不同的机器上使用 MySQL workbench 连接到 MySQL 运行 :

它显示它在 pi@192.168.1.3

上将我登录到 mysql root 用户到 127.0.0.1

然后

我想用arduino单片机远程插入数据到数据库,我绝对不能写127.0.0.1

127.0.0.1 是环回接口,当您尝试在本地连接到 mysql 服务时使用(在 mysql 服务所在的同一台服务器上 运行).

如果您需要从另一台机器连接到 mysql 服务,您将需要它的 IP 地址。您可以使用 ifconfig 查看分配给服务器的 IP 地址。

每台服务器的 IP 都是 127.0.0.1。如果你想连接到安装在你登录的机器上的 MySQL,你将使用 IP 127.0.0.1 或 localhost 但如果你想通过另一台机器连接到该机器上的 MySQL,你将必须识别其 IP,以便您可以通过该 IP 进行连接。这就是为什么您将通过 IP 192.168.1.3 而不是 127.0.0.1 远程连接到您的 MySQL 服务器。 localhost 还是 IP 127.0.0.1

您需要了解一些关于 TCP/IP 的知识才能了解这里发生的事情。每个 TCP/IP 堆栈(实现)在地址 127.0.0.1(对于 IPv4)或 ::1(对于 IPv6)下都有内部环回接口。这使得在不知道它的 TCP/IP 地址(或者即使它有 none)的情况下访问本地机器上的堆栈变得容易。

那么参与 TCP/IP 网络的每台机器都需要一个地址,在该地址下它在该网络中是已知的(在您的情况下 192.168.1.3)。当您在本地计算机上工作时,使用它的 public IP 地址或环回接口并不重要。第三个选项是名称 localhost,它解析为环回接口。但要注意:它取决于 OS 最终是 IPv4 还是 IPv6 变体。

如您所知,您可以为用户指定一个主机,该主机决定可以从哪个主机进行连接。这里user@localhostuser@127.0.0.1(或user@::1不是同一个主机。 MySQL 终端隐式地将本地主机和环回 IP 地址视为相同,以方便用户使用,但其他客户端则不然。这里所说的绑定地址,通常是根本不涉及的。这是针对与此处无关的特殊情况。在 10 多年里,我从来没有为 MySQL.

设置绑定地址

更新:我希望反对者对他们的行为发表评论,以表明我的回答是否需要改进,或者他们只是无知。