添加到mysql的主机设置为127.0.0.1的用户与localhost的用户之间有什么区别?

添加到mysql的主机设置为127.0.0.1的用户与localhost的用户之间有什么区别?,mysql,localhost,Mysql,Localhost,我注意到,对于主机设置为127.0.0.1的root用户和主机设置为localhost的root用户,总是存在条目。我的问题是,为什么会有两个条目,如果包含机器名称,则有四个条目;如果包含:1,其中机器名称是实际的机器名称,如appServer2 我想知道为什么会有多个条目。是否存在localhost未解析为127.0.0.1的计算机?他们运行mysql时会尝试通过服务器“外部”接口进行连接吗 我以前见过这个问题,但没有人回答为什么“127.0.0.1”和“localhost”总是分开的条目。在

我注意到,对于主机设置为
127.0.0.1
的root用户和主机设置为
localhost
的root用户,总是存在条目。我的问题是,为什么会有两个条目,如果包含
机器名称
,则有四个条目;如果包含
:1
,其中机器名称是实际的机器名称,如appServer2

我想知道为什么会有多个条目。是否存在
localhost
未解析为
127.0.0.1
的计算机?他们运行mysql时会尝试通过服务器“外部”接口进行连接吗


我以前见过这个问题,但没有人回答为什么“127.0.0.1”和“localhost”总是分开的条目。

在unix系统上的MySQL中,
localhost
是一个特殊值。它用于通过本地套接字而不是TCP/IP标识连接

(令人困惑的是,在MySQL之外,主机名
localhost
通常解析为IP地址127.0.0.1。为了减少混淆,请将MySQL中的“localhost”理解为完全不同的含义。最好将其命名为“local\u socket\u connection”。)

这些是单独的条目,因为“localhost”永远不会引用TCP/IP连接,IP地址也永远不会引用本地套接字

参考:

默认主机名为
localhost
。在Unix上,这有一个特殊的含义,稍后将介绍


在Unix上,MySQL程序专门处理主机名
localhost
,与其他基于网络的程序相比,其处理方式可能不同于您所期望的。对于连接到
localhost
,MySQL程序尝试使用Unix套接字文件连接到本地服务器。即使提供了指定端口号的
--port
-P
选项,也会发生这种情况。要确保客户端与本地服务器建立TCP/IP连接,请使用
--host
-h
指定主机名值
127.0.0.1
,或本地服务器的IP地址或名称。您还可以使用
--protocol=TCP
选项显式指定连接协议,即使对于本地主机也是如此。例如:


它们是分开的,因为您不需要将localhost设置为127.0.0.1,但这是默认值。对于99%的人来说,这是相同的,但是如果出于某种原因您希望更改localhost的含义,那么您就可以使用它。在unix系统上的MySQL中,主机名
localhost
具有特殊的含义。在MySQL中,
user@localhost
从未解析为IP地址127.0.0.1或其他。它通过本地Unix套接字文件标识连接。