与绑定地址的MySQL – 可能创build一个IPexception?

如果您在my.cnf中将bind-address设置为127.0.0.1 ,有没有办法手动允许来自特定IP地址的连接?

大多数情况下,我的数据库是由它托pipe的服务器访问的,但我也希望能够通过odbc连接器直接从办公室访问数据库。 是否可以指定一个exception? 或者是一个SSH隧道的唯一可行的方式来连接到数据库一旦bind-address已被设置?

(我试图避免在办公室的每台机器上设置一个ssh隧道)。

bind-address指定你的mysql服务器的本地 IP地址,它不需要对它的远程地址(它可以连接的地方)做任何事情。

您的地址(以192.168开头)是本地networking地址,也就是说,它只能从本地networking连接。 对于一个localnet mysql 网关服务器来说,这是一个非常简单的方法,使mysql可以专门用于本地networking的方向。

但是它不能根据连接上的远程地址提供任何过滤。

这个绑定的东西实际上是linux(unix)内核的一个设置:创build一个套接字,这次你的mysql守护进程的TCP端口3306正在侦听,它可以被设置,在哪个接口上它可以等待连接。 默认情况下,它们都可以连接。

这是因为你不能从你的mysqlconfiguration ,你想要的。 但是你有两个更好的select:

  1. 你可以允许mysql连接到每个人(使用bind-address = 0.0.0.0 ,或完全注释掉这一行)。 之后,您可以使用iptables来限制可能的连接器地址(在这种情况下,您的本地networking和您的朋友的外部IP地址)。
  2. 你可以使用mysqls自己的安全机制限制可能的mysql连接器。 这是一个基于主机的MySQL服务器authentication。 谷歌为“MySQL授予主机”。

(1)更安全,但(2)不需要你学习iptables。

你必须通过ssh隧道设置端口转发。

当在127.0.0.1:3306上监听mysql ,你必须创build转发链接:

 ssh -f [email protected] -L localhost:3306:127.0.0.1:3306 -N 

然后,您可以连接到localhost:3306上的mysql ,就像在本地计算机上启动一样。 所有到localhost:3306连接都将通过encryption链接转发到your-server.tld上的127.0.0.1:3306 。 在这里,我使用synonims localhost127.0.0.1从服务器告诉客户端。

只有在your-server.tld上拥有有效帐号的用户才能连接到mysql服务器,而不pipe他们的IP地址。 您可以轻松创build多个隧道到不同的服务器。

 ssh -f [email protected] -L localhost:3306:127.0.0.1:3306 -N ssh -f [email protected] -L localhost:3307:127.0.0.1:3306 -N ssh -f [email protected] -L localhost:3308:127.0.0.1:3306 -N