将MySQL的绑定地址设置为0.0.0.0有多糟糕?


35

我试图允许远程服务器访问当前与Web应用程序共享Linux服务器的MySQL实例。根据文档,唯一可能的方法(除非我不能正确理解)是将bind-address指令设置为0.0.0.0,这导致MySQL允许从任何可以产生有效用户的IP进行访问。

因此,有两个问题:

  1. 这对安全有多有害?
  2. 有没有更好的方法可以与MySQL进行本地和远程交互?

Answers:


36

我认为您对bind-address设置有些误解。这些是MySQL将侦听连接的本地地址。默认值为0.0.0.0,即所有接口。除非您仅为本地主机指定127.0.0.1,否则此设置不限制哪些IP可以访问服务器。

如果您需要限制某些用户使用特定的IP地址,请使用像这样的创建/授权用户CREATE USER 'bobdole'@'192.168.10.221';


+1,但请注意,默认侦听地址取决于MySQL的安装方式。
John Gardeniers

感谢Doug,我认为在这种情况下,默认值是我的本地主机,但是很高兴知道特定数据库的用户仍然受到IP的限制。
jonathanatx

@jonathanatx MySQL的默认绑定地址(在5.6中,据我所知)是0.0.0.0。虽然,我确实认为对于许多安装,仅本地绑定是最佳选择。如果您不希望任何人穿过门,请不要打开门。
ebyrob

1

一种。这不好。即使您可以通过每个数据库上的ip限制用户访问权限,但我认为将所有连接都本地输入更为安全。在我的服务器上,我允许MySQL仅接受本地连接,默认配置为127.0.0.1。要远程访问数据库,您需要做的就是在连接到数据库之前创建一个ssh隧道,然后在本地进行连接。如果您使用php编码,则很容易做到这一点。如果您使用的是桌面应用程序,则在Linux上很容易做到(查找ssh隧道),在Windows上,我通常使用Putty之类的程序为我创建隧道。


7
太疯狂了。执行此操作的标准方法是创建只能从某些主机名或IP访问的用户。强制每个Web服务器建立到数据库的SSH隧道比需要完成的工作多得多。
TheLQ 2011年

3
您的Web服务器和数据库服务器并不总是同一台设备。当然,不要让连接从Internet进入。但是有安全的方法来构建具有MySQL网络访问权限的解决方案。
Shane Madden

1
对于较小的设置(一个数据库,一个www),您可以进行ssh隧道传输。对于真正的设置,您的VPN和防火墙会保护您,因此您将通过0.0.0.0打开以允许远程访问。
索尼娅·汉密尔顿

2
对于每个认为SSH隧道概念很疯狂的人,请考虑清楚大部分MySQL流量。如果由于某种原因您必须通过不可信的网络(即Internet)进行连接,请考虑使用SSH或通过VPN进行连接。如果您想了解我在说什么,请启动Wireshark或其他一些数据包嗅探器。
Brad 2013年

2
@Brad MySQL支持加密,因此不正确。
Marti Markov
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.