有没有一种秘密的方法可以将MySQL绑定到一个以上的IP地址?
据我所知,my.cnf中的bind-address参数不支持一个以上的IP,而且你不能拥有它超过一次。
没有,没有(我1小时前刚检查过)。你可以在my.cnf中注释bind-address。
#skip-networking
#bind-address = 127.0.0.1
如果你只想要2个IP,那么你就必须使用防火墙。
你不能绑定到一个以上的IP地址,但你可以绑定到所有可用的IP地址。
如果是这样,只要在你的MySQL配置文件中使用0.0.0.0
作为绑定地址(如
/etc/mysql/my.cnf)中的绑定地址,如下所示。
bind-address = 0.0.0.0
如果地址是0.0.0.0,服务器接受所有服务器主机IPv4接口上的TCP/IP连接,如果地址是::
,服务器接受所有服务器主机IPv4和IPv6接口上的TCP/IP连接。
此外,如果地址是::
,服务器在所有服务器主机的IPv4和IPv6接口上接受TCP/IP连接。
使用这个地址可以在所有服务器接口上同时允许IPv4和IPv6连接。
或者你也可以简单地将bind-address=
全部注释掉,这样它就会绑定到所有地址。
但是,如果你想允许远程连接,请确保你没有在my.cnf中启用skip-networking
。
MySQL。
允许远程和本地连接][1])。)
更改绑定地址后,不要忘记重新启动你的MySQL服务器。
sudo service mysql restart
最终你可以考虑在一台机器上(不同的端口)通过主/从复制来运行多个MySQL实例。 复制可以使一个MySQL数据库服务器(主站)的数据复制到一个或多个MySQL数据库服务器(从站)。
阅读更多。
[1]: https://serverfault.com/questions/171655/mysql-allow-both-remote-and-local-connections [2]: http://dev.mysql.com/doc/refman/5.7/en/multiple-servers.html [3]: http://dev.mysql.com/doc/refman/5.7/en/replication.html
正如其他人所回答的那样,目前还没有一种方法可以选择性地绑定到多个接口上。
Linux有一些TCP工具,可以实现这个功能。 在这个设置中,你'd配置mysql在127.0.0.1上监听,然后使用[redir][1]将其暴露在任意接口上。
我'一直在用这个方法帮助一个虚拟盒子的客人看到主机上安装的mysql。
redir --laddr=192.168.33.1 --lport=3306 --caddr=127.0.0.1 --cport=3306 &
>.在MySQL 8.0.13之前,--bind-address接受单个地址值,即 在MySQL 8.0.13之前,--bind-address接受一个单一的地址值。
可以指定一个单一的非外卡IP地址或主机名,或者是
一种通配符地址格式,允许监听多个
网络接口(、0.0.0.0或::)。 网络接口(,0.0.0.0,或::)。 网络接口(*,0.0.0.0,或::)。 从MySQL 8.0.13开始,--bind-address接受一个单一的值,就像现在的一样。 >.描述的,或者是一个逗号分隔的数值列表。 描述,或一个逗号分隔的值列表。 当选项名称为
一个由多个值组成的列表,每个值必须指定一个单一的
非通配符的IP地址或主机名。 都不能指定通配符 >.地址格式(、0.0.0.0或::)。 地址格式(, 0.0.0.0, 或::)。
资料来源。 https://dev.mysql.com/doc/refman/8.0/en/server-options.html
在my.cnf中更改(通常是/etc/mysql/my.cnf,在Linux上或windows下,检查[this][1]答案。
bind-address = 127.0.0.1
到
bind-address = 0.0.0.0
[1]: https://stackoverflow.com/questions/1712646/i-can-not-find-my-cnf-on-my-windows-computer
然后重启mysql(在Ubuntu上service mysql restart)在windows上通常通过Win+R services.msc重启服务。
0.0.0.0告诉它绑定到所有可用的IP's,端口也在my.cnf中给出。