我对 php、数据库和 linux 还不熟悉,遇到了一个问题,我无法使用 php mysql_connection 函数连接到 mysql 数据库。当我使用虚拟机的 ip 地址时,总是出现连接失败的情况。
在遍历 Linux 的目录结构一个小时后,我找到了 /etc/hosts/ 并注意到了 2 个 IP 地址。我的环回地址和 127.0.1.1。我只是为了好玩才使用了 127.0.1.1,然后我能够连接到我的数据库并提取我请求的数据。我不明白为什么 127.0.1.1 有效,而我的虚拟机服务器的 IP 无效。
有人能解释一下 127.0.1.1 的意义吗?据我所知,它可以解析我设备的主机名,但我不明白这是什么意思。
答案1
与网络关联的 IP 地址127.0.0.0/8
仅供本地计算机内的通信使用。这样做的目的之一是允许系统内的软件在任何物理网络接口配置为 TCP/IP 之前使用 TCP/IP 进行进程间通信。
当服务器软件启动时,它可以选择一个特定的 IP 地址进行关联。作为一项安全功能,许多服务将绑定到该地址127.0.0.1
或某个“127.0.0.0/8”网络,而不是监听与网络接口关联的 IP 地址上的连接。这使得特定服务只能从系统本身访问。
Ubuntu 上的 Mysql 就是一个例子。在/etc/mysql/my.cnf
的默认配置中,它有一个设置bind-address = 127.0.0.1
。这意味着 mysql 守护进程只能在本地使用,除非您手动更改该设置。只需注释掉“bind-address”行,即可使 mysql 默认监听与您的系统相关的所有 IP。