bind_address 参数:
其实能否绑定多个IP跟mysql 版本有关系。
MySQL 服务器在一个或多个网络套接字上侦听 TCP/IP 连接。每个套接字绑定到一个地址,但一个地址可以映射到多个网络接口。要指定服务器应如何侦听 TCP/IP 连接,请 bind_address在服务器启动时设置系统变量。服务器还有一个 admin_address系统变量,可以在专用接口上启用管理连接。
1. 如果bind_address指定,其值必须满足以下要求:
-
在 MySQL 8.0.13 之前, bind_address接受单个地址值,它可以指定单个非通配符 IP 地址或主机名,或允许侦听多个网络接口(、、或)的通配符地址*格式 0.0.0.0之一::。
-
从 MySQL 8.0.13 开始,bind_address接受刚才描述的单个值或逗号分隔值的列表。当变量命名多个值的列表时,**每个值必须指定一个非通配符 IP 地址(IPv4 或 IPv6)或主机名。**值列表中不允许使用 通配符地址格式(*、 0.0.0.0或)。::
(当多个值的时候,每个值必须是一个确定的IP,不能有通配符。) -
从 MySQL 8.0.22 开始,地址可能包含网络命名空间说明符。
IP 地址可以指定为 IPv4 或 IPv6 地址。对于作为主机名的任何值,服务器将名称解析为 IP 地址并绑定到该地址。如果主机名解析为多个 IP 地址,则服务器使用第一个 IPv4 地址(如果有),否则使用第一个 IPv6 地址。
2. 服务器处理不同类型的地址如下:
-
如果地址为*,则服务器在所有服务器主机 IPv4 接口上接受 TCP/IP 连接,如果服务器主机支持 IPv6,则在所有 IPv6 接口上接受 TCP/IP 连接。使用此地址可允许所有服务器接口上的 IPv4 和 IPv6 连接。此值为默认值。如果变量指定了多个值的列表,则不允许使用此值。
-
如果地址是0.0.0.0,则服务器接受所有服务器主机 IPv4 接口上的 TCP/IP 连接。如果变量指定了多个值的列表,则不允许使用此值。
-
如果地址是::,则服务器接受所有服务器主机 IPv4 和 IPv6 接口上的 TCP/IP 连接。如果变量指定了多个值的列表,则不允许使用此值。
-
如果地址是 IPv4 映射地址,则服务器接受该地址的 TCP/IP 连接,采用 IPv4 或 IPv6 格式。例如,如果服务器绑定到::ffff:127.0.0.1,客户端可以使用–host=127.0.0.1或 --host=::ffff:127.0.0.1 进行连接。
-
如果地址是“常规” IPv4 或 IPv6 地址(例如127.0.0.1或 ::1),则服务器仅接受该 IPv4 或 IPv6 地址的 TCP/IP 连接。
3.这些规则适用于为地址指定网络命名空间:
-
可以为 IP 地址或主机名指定网络名称空间。
-
不能为通配符 IP 地址指定网络命名空间。
-
对于给定的地址,网络命名空间是可选的。如果给定,则必须将其指定为 紧跟地址的后缀。 /ns
-
没有 后缀的地址使用主机系统全局命名空间。因此全局命名空间是默认的。 /ns
-
带有 后缀的地址使用名为 ns的命名空间。 /ns
-
主机系统必须支持网络命名空间,并且每个命名的命名空间都必须事先设置。命名一个不存在的命名空间会产生错误。
-
如果变量值指定多个地址,它可以包括全局命名空间、命名命名空间或混合中的地址。
如果绑定到任何地址失败,服务器会产生错误并且不会启动。
例子:
bind_address=**服务器侦听通配符 指定的所有 IPv4 或 IPv6 地址。bind_address=198.51.100.20服务器仅侦听 198.51.100.20IPv4 地址。bind_address=198.51.100.20,2001:db8:0:f101::1服务器侦听198.51.100.20 IPv4 地址和2001:db8:0:f101::1 IPv6 地址。bind_address=198.51.100.20,*bind_address这会产生错误,因为在命名多个值的列表 时不允许使用通配符地址 。bind_address=198.51.100.20/red,2001:db8:0:f101::1/blue,192.0.2.50服务器侦听 red命名空间中的 198.51.100.20 IPv4 地址、blue命名空间中的 2001:db8:0:f101::1IPv6 地址 192.0.2.50全局命名空间中的 IPv4 地址。
实例如下:
当bind_address命名单个值(通配符或非通配符)时,服务器侦听单个套接字,通配符地址可能绑定到多个网络接口。当 bind_address命名多个值的列表时,服务器会侦听每个值的一个套接字,每个套接字都绑定到一个网络接口。套接字的数量与指定的值的数量成线性关系。根据操作系统的连接接受效率,长值列表可能会导致接受 TCP/IP 连接的性能损失。
因为文件描述符是为监听套接字和网络命名空间文件分配的,所以可能需要增加open_files_limit系统变量。
如果您打算将服务器绑定到特定地址,请确保mysql.user系统表包含具有管理权限的帐户,您可以使用该帐户连接到该地址。否则,您无法关闭服务器。例如,如果您将服务器绑定到 *,您可以使用所有现有帐户连接到它。但是,如果您将服务器绑定到 ::1,它只接受该地址上的连接。在这种情况下,首先确保该 ‘root’@'::1’帐户存在于 mysql.user表中,以便您仍然可以连接到服务器以将其关闭。
来源地址:https://blog.csdn.net/xili2532/article/details/126837345