有没有一种秘密的方式来绑定MySQL到多个IP地址?
据我所见,my.cnf中的bind-address参数不支持多个IP,不能多次使用。
不,没有(我刚刚在1小时前检查过)。 您可以评论my.cnf中的绑定地址:
#skip-networking #bind-address = 127.0.0.1
如果你只需要两个IP地址,那么你将不得不使用防火墙。
绑定到127.0.0.x将不会使所有设备都可用,只会使其在本地可用。 如果您希望将其提供给所有接口,则应使用0.0.0.0。 如果您希望从多个接口访问它,但不是所有接口,则应该将0.0.0.0和防火墙绑定到不希望被访问的接口上。
另外,作为第二层安全性,你应该确保你所有的MySQL用户的主机字段都设置为%以外(即任何主机)。
您不能绑定到多个IP地址,但您可以绑定到所有可用的IP地址。 如果是这样,只需在您的MySQLconfiguration文件(例如/etc/mysql/my.cnf)中使用0.0.0.0
作为绑定地址,如下所示:
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服务器:
sudo service mysql restart
最终,您可以考虑在主/从复制的单台机器(不同端口)上运行多个MySQL实例。 通过复制,可以将来自一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器)。
阅读更多:
你不能。 您链接的页面明确指出:
要绑定的IP地址。 只能select一个地址。 如果多次指定此选项,则使用给定的最后一个地址。
如果没有指定地址或0.0.0.0,则服务器侦听所有接口。
我认为你的问题是关于这个bug http://bugs.mysql.com/bug.php?id=14979错误报告build议一些解决方法。
正如其他人所回答的,目前还没有办法select性地绑定到多个界面。
Linux有一些使之成为可能的TCP工具。 在这个设置中,你需要configurationmysql来监听127.0.0.1,然后使用redir在任意接口上公开它。
我一直在使用这个来帮助一个虚拟的客户端看到主机上安装的mysql。
redir --laddr=192.168.33.1 --lport=3306 --caddr=127.0.0.1 --cport=3306 &
在my.cnf中更改(通常是Linux上的/etc/mysql/my.cnf或windows查看这个答案。
bind-address = 127.0.0.1
至
bind-address = 0.0.0.0
然后重新启动mysql(在Ubuntu 服务mysql重新启动 )在Windows上通常服务重新启动通过Win + R services.msc
0.0.0.0告诉它绑定到my.cnf中给出的所有可用IP