我正在尝试设置 mysql 副本。在主服务器上,当我将bind-address
值更改my.cnf
为服务器的 IP 地址时,某些网站会崩溃,因为它们用作127.0.0.1
数据库主机值。
很少有其他网站(WordPress)可以工作,因为 WP 使用localhost
数据库主机值。
它是生产服务器,所以我没有自由在所有那些破坏或尝试更改的网站上进行127.0.0.1
更改。localhost
有没有其他方法可以将 mysql 配置bind-address
值保留为服务器的 IP,并且它可以与网站配置中指定的 localhost 或 127.0.0.1 一起使用?
这是我的 /etc/hosts,一些值已被编辑
# cat /etc/hosts
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1 localhost ns123456
xx.xx.xx.xx ns123456.ip-11-22-33.net ns123456
更新
https://stackoverflow.com/questions/19712307/mysql-localhost-127-0-0-1上有很好的讨论,但它没有提供明确的答案。
绑定 IPv4 套接字时,BSD 套接字 API(大多数 *nix 和其他操作系统使用)有两种选择:绑定到单个地址,或使用保留地址 0.0.0.0 又名 INADDR_ANY绑定到所有地址。
为了使本地客户端能够使用 127.0.0.1(而不是主机地址)访问您的mysqld实例,并且远程副本服务器必须使用主机地址,需要两个地址。如果版本支持的话,要么告诉mysqld绑定两次:每个地址一个套接字,要么绑定一次到 INADDR_ANY,它允许所有可能的访问。
从文档中:
如有疑问,请使用 0.0.0.0。如果服务器有超过 1 个接口或超过 1 个地址(除了环回接口之外),并且您不希望访问所有这些接口和/或地址,即使如此,也应该已经安装了足够的防火墙,或者否则将到位,以处理此案。