• mysql 指定多个IP 绑定监听地址 bind_address


    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 地址。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    实例如下:
    在这里插入图片描述

    当bind_address命名单个值(通配符或非通配符)时,服务器侦听单个套接字,通配符地址可能绑定到多个网络接口。当 bind_address命名多个值的列表时,服务器会侦听每个值的一个套接字,每个套接字都绑定到一个网络接口。套接字的数量与指定的值的数量成线性关系。根据操作系统的连接接受效率,长值列表可能会导致接受 TCP/IP 连接的性能损失。

    因为文件描述符是为监听套接字和网络命名空间文件分配的,所以可能需要增加open_files_limit系统变量。

    如果您打算将服务器绑定到特定地址,请确保mysql.user系统表包含具有管理权限的帐户,您可以使用该帐户连接到该地址。否则,您无法关闭服务器。例如,如果您将服务器绑定到 *,您可以使用所有现有帐户连接到它。但是,如果您将服务器绑定到 ::1,它只接受该地址上的连接。在这种情况下,首先确保该 ‘root’@'::1’帐户存在于 mysql.user表中,以便您仍然可以连接到服务器以将其关闭。

  • 相关阅读:
    Validation参数校验
    【Servlet】1:踏入JavaWeb的第一把钥匙
    【软考】9.2 串/数组/矩阵/广义表/树
    10名IB学生获得满分,新加坡环球印度国际学校成为一匹黑马
    IP 核之 MMCM/PLL 实验
    Python基础入门例程61-NP61 牛牛的矩阵相加(循环语句)
    爬虫 day 06 lxml和多线程
    无胁科技-TVD每日漏洞情报-2022-11-8
    【小想法】第1期:模型工程化,向量相似度,早停机制,BERT微调小trick
    AQS简介
  • 原文地址:https://blog.csdn.net/xili2532/article/details/126837345