带有绑定地址的 MySQL-可以创建 IP 例外吗?

带有绑定地址的 MySQL-可以创建 IP 例外吗?

如果您将其设置bind-address127.0.0.1my.cnf是否有任何方法可以手动允许来自特定 IP 地址的连接?

我的数据库主要通过托管它的服务器访问,但我还希望能够通过 odbc 连接器直接从办公室访问数据库。是否可以指定例外?或者bind-address设置后 ssh 隧道是否是连接数据库的唯一可行方法?

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

答案1

bind-address指定当地的你的mysql服务器的ip地址,它不需要做任何事情偏僻的地址(可以从哪里进行连接)。

您的地址(以 开头192.168)是本地网络地址,这意味着它只能从您的本地网络连接。这是 localnet mysql 的一种非常简单的方法网关服务器使 mysql 仅在您的本地网络方向上可用。

但它不能提供任何基于偏僻的连接上的地址。

这个绑定其实是linux(unix)内核的一个设置:创建一个套接字,此时,mysql守护进程的监听TCP端口3306,可以设置它在哪个接口上等待连接。默认情况下,它在所有这些接口上都是可连接的。

这是因为你不能从你的mysql配置中执行,这就是你想要的。但你有两个更好的选择:

  1. 您可以允许所有人连接 mysql(使用bind-address = 0.0.0.0或完全注释掉此行)。之后,您可以使用iptables来限制可能的连接器地址(在本例中,限制为您的本地网络和您朋友的外部 IP)。
  2. 您可以使用 mysql 自己的安全机制来限制可能的 mysql 连接器。这是基于主机的 mysql 服务器身份验证。在 Google 中搜索“mysql grant host”。

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

答案2

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

mysql在收听时127.0.0.1:3306,您必须创建转发链接:

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

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

只有拥有有效帐户的用户your-server.tld才能连接到mysql服务器,无论其 IP 地址如何。您可以轻松创建多个通往不同服务器的隧道。

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

相关内容