宝塔面板数据库被注入?教你紧急恢复
数据库被注入堪称建站最棘手的故障之一,但如果你用的宝塔面板,恢复流程其实可以清晰拆成三步。
下面按零基础能直接照做的顺序讲清楚。
第一步:快速判断数据库是否被注入
登录宝塔面板,进入“软件商店”找到 MySQL 或 MariaDB,点击“phpMyAdmin”管理。
检查以下几个可疑迹象:
- 表里出现大量非自身业务的数据,例如
wp_options表被插入恶意链接字段。 - 某些表的大小突然暴增,且列名包含
eval、base64或随机字符串。 - 执行
SELECT * FROM 可疑表 LIMIT 100;能看到 script 标签或外部 URL。
同时打开宝塔“安全”面板,查看“防火墙”中的“日志”或“网站”中的“访问日志”,查找近期是否有大量 POST 或 GET 请求带有 drop、union 等敏感参数。
这一步能帮你确定攻击源头是 SQL 注入还是 XSS 注入。
第二步:立即切断注入来源并锁定数据库
无论是否确认,先执行以下紧急操作:
- 暂停网站运行:在宝塔“网站”列表中找到被攻击站点,点击“停止”。如果有多站点共用数据库,建议停止关联的所有站点。
- 封锁攻击 IP:从访问日志里提取攻击 IP,在宝塔“安全”的“IP 规则”中将其加入黑名单。如果攻击 IP 太多,临时开启防火墙的“CC 防护”并调高阈值。
- 修改数据库密码:进入“软件商店”->“MySQL”->“设置”,重置 root 密码,并在“权限”中为每个数据库创建一个专用用户,不要用 root 连接站点。
注意:不要直接删除或清空可疑表,先备份整个数据库(宝塔 phpMyAdmin 里点“导出”),或者用命令行 mysqldump -u 用户名 -p 数据库名 > backup.sql 保存一份,防止误删后用不上。
第三步:从备份恢复或手动修复
如果之前有备份,优先恢复干净版本:
- 在宝塔“数据库”列表中找到对应数据库,点击“导入”,上传最新的
.sql备份。导入前先清空原数据库(点“管理”进入 phpMyAdmin,勾选所有表,选择“清空”)。 - 如果没有备份,只能手动清理。在 phpMyAdmin 中执行 SQL 命令删除可疑表或字段。例如删除
wp_posts中post_content尾部附加的恶意脚本:
UPDATE wp_posts SET post_content = REPLACE(post_content, '', '') WHERE post_content LIKE '%
1
服务中心