我有一台运行 MySQL 服务器的 CentOS 服务器。我想阻止远程访问 MySQL。我该如何实现?
答案1
正如@Bruno 回答的那样,编辑 my.cnf 并设置绑定地址。
另一种方法是在 MySQL 用户级别设置访问控制。授予语法显示了这一点。可以将用户帐户设置为可从特定网络 IP 访问(例如 127.0.0.1 或 localhost 或 %.%.%)
答案2
将其本地地址绑定到localhost,在MySQL配置文件中:
bind-address = 127.0.0.1
(或者仅使用 unix 套接字)。
请注意,通过 SSH 隧道的用户也将被视为来自localhost
:在这种情况下不要泄露 SSH 帐户。
答案3
如果您的服务器位于 NAT 后面(即它只有“本地”地址,但它仍然直接从互联网接收流量),但您在这个网络上有多台机器(因此绑定到 127.0.0.1 不是一个选项)那么使用防火墙阻止除本地流量之外的所有流量将是可行的方法。
在 iptables 中,您可以以 root 身份使用以下命令完成此操作:
iptables -I INPUT --dport 3306 -j DROP
iptables -I INPUT -s 192.168.0.0/24 --dport 3306 -j ACCEPT
请注意,这会将 DROP 规则作为第一条规则,然后将 ACCEPT 规则放在其前面。使用您用来保存防火墙规则的任何方法,可能都有更好的方法。(可能iptables-save
和iptables-restore
。)
答案4
我想知道使用内置的“--skip-networking”命令行参数是否能满足您的需要。正如 Zoredache 提到的,这似乎是默认设置。