MySQL:绑定到多个IP地址?

有没有一种秘密的方式来绑定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数据库服务器(从服务器)。

阅读更多:

  • 5.3在MySQL.com的一台机器上运行多个MySQL实例
  • MySQL.com上的第17章复制

你不能。 您链接的页面明确指出:

要绑定的IP地址。 只能select一个地址。 如果多次指定此选项,则使用给定的最后一个地址。

如果没有指定地址或0.0.0.0,则服务器侦听所有接口。

正如其他人所回答的,目前还没有办法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