据我所见,my.cnf中的bind-address参数不支持多个IP,您可以不止一次。
#1 楼
不,没有(我刚刚在1小时前检查过)。您可以在my.cnf中注释绑定地址:注意:«1小时前»距今已有10多年了。
#skip-networking
#bind-address = 127.0.0.1
如果如果只需要2个IP,则必须使用防火墙。
对于MySql 8.0.13及更高版本,可以指定用逗号分隔的IP地址的列表。
bind-address = 10.0.0.1,10.0.1.1,10.0.2.1
相关的MySql文档。
评论
正确。绑定限制为0、1或服务器上的所有IP地址。
–乔
2010-09-14 21:01
但是请注意,通过指定socket和bind-address选项,您既可以发布本地unix套接字,也可以发布网络套接字。
–丹诺顿
2012年3月30日17:04
直到今天仍然如此。
–丹尼斯·诺尔特
2014年8月11日下午13:07
那太荒谬了。
– Phillipp
2015年12月11日在15:01
@AJP Mysql在特权系统中对“ localhost”和“ 127.0.0.1”的处理不同。此处确认:如果您未指定主机名或指定特殊主机名localhost,则使用Unix套接字文件。
–克里斯蒂安·莱斯库(Christian Lescuyer)
16 Apr 15 '18:02
#2 楼
绑定到127.0.0.x不会使它对所有设备可用,而只会使它在本地可用。如果希望使其可用于所有接口,则应使用0.0.0.0。如果您希望从多个接口(但少于所有接口)访问该接口,则应绑定到0.0.0.0,并屏蔽不想访问的接口。此外,作为第二层安全保护,您应该确保所有MySQL用户的主机字段都设置为%(即任何主机)以外的其他值。
评论
除非网络堆栈损坏,否则无法将TCP端口绑定到地址0.0.0.0。
–约翰·加迪尼尔(John Gardeniers)
2010年5月6日在22:49
您可以绑定到0.0.0.0。您只是无法路由到它。如果您使用的是Linux(甚至在Windows上,只需为Windows安装netcat),请尝试:在一个终端上:nc -l 0.0.0.0 4321在另一个终端上:telnet <计算机具有的任何接口的IP> 4321将连接到它。
–灰色豹
2010年5月18日在16:49
就像我说的,除非您的网络堆栈坏了...
–约翰·加迪尼尔(John Gardeniers)
2010-6-25 at 2:58
@JohnGardeniers这就是为什么它在特殊地址下定义的linux ip(7)手册页中:INADDR_ANY(0.0.0.0)表示任何要绑定的地址;吗?
– ebyrob
13年7月24日在17:06
在Debian上,创建一个文件/etc/mysql/conf.d/bindaddress.cnf,其内容为[mysqld] \ n bind-address = 0.0.0.0
–伊夫·马丁(Yves Martin)
13年8月16日在12:07
#3 楼
您不能绑定多个IP地址,但可以绑定所有可用IP地址。如果是这样,只需使用0.0.0.0
作为MySQL配置文件(例如/etc/mysql/my.cnf)中的绑定地址,如下所示:bind-address = 0.0.0.0
如果地址是0.0.0.0,服务器在所有服务器主机IPv4接口上接受TCP / IP连接。
此外,如果地址为
::
,则服务器在所有服务器主机IPv4和IPv6接口上接受TCP / IP连接。使用此地址允许所有服务器接口上的IPv4和IPv6连接。 或者您也可以完全注释掉
bind-address=
,这样它将绑定到所有地址。但是,如果还要允许远程连接,请确保未在my.cnf中启用skip-networking
(更多信息:MySQL:允许远程和本地连接)。绑定地址,请不要忘记通过以下方式重新启动MySQL服务器:
主/从复制的不同端口)。复制使数据可以从一台MySQL数据库服务器(主服务器)复制到一台或多台MySQL数据库服务器(从服务器)。
更多信息:
5.3在MySQL.com上在一台计算机上运行多个MySQL实例
第17章在MySQL.com上进行复制
评论
这很好。只要记住检查是否允许所有用户从该第二,第三连接即可,无论IP地址如何
–gies0r
19年8月9日在14:15
#4 楼
你不能。您链接到的页面明确指出:要绑定的IP地址。只能选择一个地址。如果多次指定此选项,则使用给定的最后一个地址。
如果未指定地址或0.0.0.0,则服务器在所有接口上侦听。
#5 楼
正如其他人回答的那样,还没有一种方法可以选择性地绑定到多个接口。Linux有一些TCP工具使之成为可能。在此设置中,您将配置mysql以侦听127.0.0.1,然后使用redir在任意接口上公开它。主机。
redir --laddr=192.168.33.1 --lport=3306 --caddr=127.0.0.1 --cport=3306 &
评论
注意MySQL> = 8.0.13允许绑定到多个接口。
–txyoji
19年6月21日在20:09
#6 楼
在MySQL 8.0.13之前,--bind-address接受单个地址值,
可以指定单个非通配IP地址或主机名,或者通配符地址之一允许监听多个
网络接口(*,0.0.0.0或::)的格式。
从MySQL 8.0.13开始,--bind-address接受单个值作为
描述或逗号分隔值列表。当
多个值的列表选项名称,每个值必须指定单个
非通配符的IP地址或主机名;没有人可以指定通配符
地址格式(*,0.0.0.0或::)。
源:https://dev.mysql.com/doc/refman/8.0/en /server-system-variables.html#sysvar_bind_address
评论
在my.cnf中为我工作:bind-address = 127.0.0.1,192.168.1.3
–obe
8月25日11:38
#7 楼
我认为您的问题与此错误有关http://bugs.mysql.com/bug.php?id=14979该错误报告提出了一些解决方法。
评论
MySQL功能要求可以追溯到2005年!
–胎蛋白
2014年4月24日14:02
#8 楼
在my.cnf中进行更改(通常在Linux或Windows下为/etc/mysql/my.cnf,请检查此答案。bind-address = 127.0.0.1
到
bind-address = 0.0.0.0
然后在Windows上重启mysql(在Ubuntu服务上重启mysql)通常通过Win + R服务重启。msc0.0.0.0告诉它绑定到所有可用的IP在my.cnf中也提供了端口
评论
正如Tadej的回答所示,从8.0.13版本开始,这已经成为可能。另请参阅“ –bind-address选项现在支持多个地址”。但是,它仍然不如PostgreSQL灵活,并且在MariaDB v。10中仍然不受支持。