TOP云提供高性价比云服务器租用,有中国内地/港澳台、海外等全球各地节点,TOP云国内云服务器只要有域名备案号就能直接用,无须重复备案;港澳台及海外云服务器不用备案,购买之后直接使用,省时省力省心。价格实惠,续费同价,2核2G5M仅需27元每月,8核8G50M仅需66元每月,更多配置套餐请进入下面网址了解:
TOP云总站云服务器:https://topyun.vip/server/buy.html
TOP云C站云服务器:https://c.topyun.vip/cart
在云服务器上限制 MySQL 的远程访问,是提升数据库安全性的重要措施。以下是几种常用的方法,适用于大多数 Linux 系统(如 CentOS、Ubuntu)上运行的 MySQL 或 MariaDB:
一、通过 MySQL 用户权限限制远程访问
这是最直接和推荐的方式,通过控制哪些用户可以从哪些主机访问数据库。
步骤:
登录 MySQL(本地登录):
mysql -u root -p
查看当前用户及其访问主机:
SELECT user, host FROM mysql.user;
限制特定用户只能本地访问(或指定 IP 访问):
如果你希望某个用户(如 root)只能本地访问,可以将其 host 设置为 localhost:
UPDATE mysql.user SET host = 'localhost' WHERE user = 'root';
如果你希望某个用户只能从特定 IP 访问,例如 192.168.1.100:
CREATE USER 'username'@'192.168.1.100' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'192.168.1.100';
FLUSH PRIVILEGES;删除允许任意主机访问的用户(如 'root'@'%'):
DROP USER 'root'@'%'; FLUSH PRIVILEGES;
退出 MySQL:
exit;
二、通过防火墙限制 MySQL 端口访问
MySQL 默认使用 3306 端口。你可以通过配置防火墙(如 iptables、firewalld 或云平台的安全组)来限制哪些 IP 可以访问该端口。
方法 1:使用 firewalld(适用于 CentOS 7+ / Fedora)
查看当前防火墙状态:
systemctl status firewalld
允许特定 IP 访问 3306 端口:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="3306" accept'
拒绝所有其他 IP 访问 3306 端口(默认是拒绝的,但可以明确设置):
firewall-cmd --permanent --remove-port=3306/tcp
重新加载防火墙:
firewall-cmd --reload
方法 2:使用 iptables(适用于大多数 Linux)
允许特定 IP 访问 3306:
iptables -A INPUT -p tcp -s 192.168.1.100 --dport 3306 -j ACCEPT
拒绝其他所有 IP 访问 3306:
iptables -A INPUT -p tcp --dport 3306 -j DROP
保存规则(根据系统不同):
对于 CentOS 7+:
service iptables save
或使用 iptables-persistent(Ubuntu)等工具。
方法 3:通过云平台安全组限制(如阿里云、腾讯云、AWS 等)
大多数云服务提供商都提供了“安全组”功能,可以控制进出云服务器的流量。
登录云控制台,进入“安全组”管理页面。
找到你的云服务器所在的安全组。
添加入站规则:
协议:TCP
端口范围:3306
来源 IP:指定允许访问的 IP 地址(如 192.168.1.100/32),或限制为某个网段。
保存规则。
注意:安全组的优先级通常高于服务器本地的防火墙设置,因此这是非常有效的控制方式。
三、修改 MySQL 配置文件(可选)
默认情况下,MySQL 可能监听所有网络接口(0.0.0.0),你可以修改其配置,使其只监听本地回环地址(127.0.0.1),从而禁止外部直接连接。
编辑 MySQL 配置文件(位置可能因系统而异):
CentOS:/etc/my.cnf
Ubuntu:/etc/mysql/mysql.conf.d/mysqld.cnf
找到 bind-address 配置项,修改为:
bind-address = 127.0.0.1
保存文件并重启 MySQL 服务:
systemctl restart mysqld # 或 service mysql restart
注意:此方法会完全禁止外部访问 MySQL,仅限本地连接。如果需要允许特定 IP 远程访问,还是要结合用户权限和防火墙设置。
总结推荐方案:
为了兼顾安全性与灵活性,推荐组合使用以下方式:
通过 MySQL 用户权限限制:只允许特定用户从特定 IP 访问。
通过防火墙或安全组限制:只开放指定 IP 访问 3306 端口。
(可选)修改 bind-address:如果完全不需要外部访问,可以将其设置为 127.0.0.1。
这样可以从多个层面保障 MySQL 的远程访问安全。