我在with应用程序正确连接到MySQL服务器时遇到了问题,为了解决这个问题,我试图注释掉文件my.ini中的设置bind-address。
这似乎解决了问题,但我想知道这是否是一个不安全的问题。这是生产环境的适当设置吗?当然,该环境的访问受到用户/密码的限制?注释掉它和将它设置为bind-address=0.0.0.0有什么区别呢?
发布于 2019-02-20 10:46:14
注释掉设置的影响取决于以前设置的bind-address值。
注释掉设置与将其设置为默认值相同。手册将显示默认值:https://dev.mysql.com/doc/refman/8.0/en/server-options.html#option_米舍尔德_绑定地址
bind-address默认值:*
手册还解释了该设置的含义以及它与使用0.0.0.0的不同之处:
如果地址为
*,则服务器在所有服务器主机IPv4接口上接受TCP/IP连接,如果服务器主机支持IPv6,则在所有IPv6接口上接受TCP/IP连接。使用此地址可以在所有服务器接口上同时使用IPv4和IPv6连接。此值是默认值。如果该选项指定多个值的列表,则不允许此值。如果地址为0.0.0.0,则服务器在所有服务器主机IPv4接口上接受TCP/IP连接。如果该选项指定多个值的列表,则不允许此值。
如果您的服务器没有受到限制访问TCP端口3306 (MySQL的默认端口)的防火墙的保护,那么使用*或0.0.0.0将在配置服务器的所有IPv4地址上接受传入连接,并且环回地址127.0.0.1/8和*上的TCP连接还将允许所有传入的IPv6通信量。
通常,只为服务配置最低网络访问权限被认为是良好的安全实践。
在许多情况下,*和0.0.0.0都可能过于宽松,但例如,在一个应该允许具有单个接口/ip地址( 192.0.2.1)的系统上,bind-address = 192.0.2.1、bind-address = 0.0.0.0或bind-address = *之间没有有效的安全差别。
在不需要允许远程MySQL访问(典型的LAMP服务器)的服务器上,建议使用bind-address = ::ffff:127.0.0.1。
发布于 2019-02-20 09:32:36
说到安全性,向世界公开你的数据绝不是一个好的选择。
谈到如何避免所做的事情,如果您的MySQL在Linux上运行,并且您有SSH访问权限,那么您可以配置一个隧道,而不需要向世界公开MySQL。
这里有一个例子:
ssh -v -N -o ExitOnForwardFailure=yes -o ConnectTimeout=10 -o NumberOfPasswordPrompts=3 \
-i ~/.ssh/yourkey.pem -o TCPKeepAlive=no -o ServerAliveInterval=60 \
-o ServerAliveCountMax=1 \
youruser@yourhost.com -L 3306:127.0.0.1:3306通过这种方式,您可以将GUI或任何需要连接的应用程序连接到IP 127.0.0.1端口3306,这样就完成了。
如果您不想使用命令行,可以设置大部分图形用户界面,通过SSH隧道连接MySQL
最后,如果您注释掉了bind-address=0.0.0.0,让mysql监听所有IP地址的连接,而不仅仅是localhost (127.0.0.1)
https://serverfault.com/questions/954848
复制相似问题