关闭数据库远程访问权限加固站点安全

关闭数据库远程访问权限:加固站点安全的核心操作

关闭数据库远程访问权限是防止外部暴力破解、数据泄露的最直接手段。
通过修改MySQL/MariaDB监听地址为127.0.0.1,并配合防火墙设置,可以彻底阻断所有外部IP对数据库端口的连接,只允许本机程序访问。
本文以Linux服务器为例,提供从查找配置文件、修改参数、重启服务到验证结果的完整步骤,适合所有使用云服务器或独立主机的网站管理员。

操作前的准备条件

执行以下操作前,请确认你已具备服务器root或sudo权限,并且知道数据库的root密码。
如果使用的是云服务器(例如泽御云提供的云服务器),建议先通过控制台快照或备份当前数据,以防误操作导致服务中断。
本文基于MySQL 5.7/8.0及MariaDB 10.x版本,操作基本一致。

修改MySQL配置文件禁止远程监听

第一步:找到MySQL配置文件

MySQL的主配置文件通常是/etc/mysql/my.cnf/etc/my.cnf,也可能是/etc/mysql/mariadb.conf.d/50-server.cnf(以MariaDB为例)。
使用以下命令查看实际路径:

sudo find /etc -name "*.cnf" -type f | xargs grep -l "bind-address" 2>/dev/null

如果结果为空,说明当前未启用bind-address参数,后续需要手动添加。

第二步:修改bind-address值

用文本编辑器(如vim或nano)打开配置文件,找到[mysqld]段落下的bind-address参数,改为:

bind-address = 127.0.0.1

如果文件中没有该参数,则在[mysqld]下新增一行。
这个设置告诉MySQL只监听本地回环地址,不再接受来自其他IP的连接请求。

第三步:重启MySQL服务使配置生效

sudo systemctl restart mysql   # 或 sudo systemctl restart mariadb

重启后检查服务状态是否正常运行:

sudo systemctl status mysql

同时堵住防火墙和云平台安全组的漏洞

即使MySQL绑定了本地地址,如果服务器防火墙或云平台安全组仍然放通了3306端口到0.0.0.0/0,外部扫描工具依然可能探测到端口开放。
因此需要同步收紧网络规则。

修改iptables/firewalld防火墙

如果使用firewalld(CentOS 7+),执行:

sudo firewall-cmd --remove-port=3306/tcp --permanent
sudo firewall-cmd --reload

如果使用iptables,执行:

sudo iptables -D INPUT -p tcp --dport 3306 -j ACCEPT   # 先移除原有规则
sudo iptables -A INPUT -p tcp --dport 3306 -s 127.0.0.1 -j ACCEPT   # 仅允许本地

检查云平台安全组

对于阿里云、腾讯云或泽御云等云服务商,登录控制台进入安全组/防火墙规则,删除或拒绝来源为0.0.0.0/0的3306端口入站规则。
只保留来源为127.0.0.1或完全不放行该端口即可。

验证远程访问是否彻底关闭

本机测试本地连接

从服务器本机连接数据库,确认能正常登录:

mysql -u root -p -h 127.0.0.1

输入密码后应成功进入MySQL命令行。

远程测试连接(建议从另一台机器执行)

mysql -u root -p -h <你的服务器公网IP>

如果配置正确,
该命令会报错:ERROR 2003 (HY000):
Can't connect to MySQL server on '...' (10060)

说明远程端口已关闭。

检查端口监听状态

sudo netstat -tlnp | grep 3306

输出应该显示127.0.0.1:3306,而不是0.0.0.0:3306

常见问题与解决办法

Q1:修改后网站无法连接数据库,怎么办?
A:确认网站程序配置文件(如WordPress的wp-config.php)中的数据库主机是否设为localhost127.0.0.1。如果设为服务器公网IP,改为localhost即可。

Q2:我需要在远程备份数据库,关闭远程访问后还能备份吗?
A:可以通过SSH隧道或使用云平台提供的备份服务。例如,使用mysqldump --host=127.0.0.1在服务器本地导出SQL文件,再通过scp下载。也可以开启云服务商的自定义备份功能。

Q3:重启MySQL后无法启动,如何排查?
A:检查/var/log/mysql/error.log中的错误信息。常见原因是bind-address语法错误或端口被占用。确认配置文件[mysqld]段落无误后,尝试注释掉其他非必要参数再重启。

Q4:关闭远程访问后,如何临时开放给特定IP维护?
A:可以修改bind-address0.0.0.0,同时在防火墙中只允许特定IP访问3306端口。操作完毕后务必改回127.0.0.1并收紧防火墙。

总结

通过修改MySQL的bind-address参数并同步调整防火墙和安全组,你已成功关闭数据库远程访问权限,大幅降低被外部扫描和攻击的风险。
建议将此操作作为新服务器上线的第一道安全加固步骤。
如果你需要更精细的权限控制(如仅允许特定应用IP),可结合数据库用户Host字段设置。
坚持“最小权限”原则,站点安全性会更上一层楼。

分享到:
上一篇
负载均衡分发海外访客至多台住宅服务器
下一篇
宝塔自动化脚本批量新建外贸独立站点
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意