我已经使用本地托管服务设置了两台 KVM 服务器。它们为每台服务器提供一个公共 IP。我在其中一个服务器上安装了 mysql-server 8。在描述问题之前,以下是我希望得到的结果:1) 第二台服务器应该能够连接到第一台服务器上的 MySQL 2) 我应该无法从不在同一网络上的笔记本电脑进行连接,即我只希望端口 (3306) 对本地网络开放。
我还没有设置 MySQL 绑定地址或在 MySQL 中创建用户。但我认为我需要根据以下内容先设置防火墙。
目前,当我跑步时
mysql -h -u 根 -p
我在我的笔记本电脑和第二台服务器上得到了相同的结果:
错误 1130:不允许主机连接...
在第二台服务器上这是意料之中的事(因为我没有在 MySQL 中添加用户权限),但在我的笔记本电脑上,我预计它会直接拒绝连接。如果相关,ping 还会收到来自我的笔记本电脑和第二台服务器的响应。
我认为我需要使用 ufw 来阻止来自互联网的连接。我该如何在仍允许本地网络连接的情况下执行此操作?我也可以运行 ifconfig。非常感谢您的帮助。
答案1
检查 ufw 的当前状态:
sudo ufw status verbose
默认情况下,UFW 设置为拒绝所有传入连接并允许所有传出连接。如果出于某种原因并非如此,您可以使用以下命令:
sudo ufw default deny incoming
接下来,要允许来自特定 IP 地址或子网的传入 MySQL 连接,请指定源。服务提供商提供给您的子网将在这里起作用。例如:
sudo ufw allow from 11.22.33.0/24 to any port 3306
对于单个 IP 地址:
sudo ufw allow from 11.22.33.44 to any port 3306
答案2
在 MySQL 中,您可以使用GRANTs
它来控制您请求的部分或全部内容。
来源可以是
localhost
-- 指的是同一服务器上的套接字连接host.name
-- 一些特定的主机名或者通配符。%
是危险的11.22.33.44
——一些 IP 地址或通配符。
请参阅文档以了解更多讨论。