你的网站被删库了?先别关电脑,按这个顺序来
昨晚还在更新文章,今早打开一看——首页变白屏,后台进不去,数据库连影子都没了。别急着骂托管商或怀疑自己手滑,删库这事真不是小概率事件。我见过做本地生活服务的站长,删库后三天没睡好;也帮过教育类 SaaS 团队,靠一份上周五的备份抢回了所有课程数据。现在就开始,一步步把损失拉回来。
第一步:立即隔离,防止二次伤害
马上断开服务器公网访问,或者用 .htaccess(Apache)或 nginx.conf(Nginx)把全站切到维护页。别点“重启”、别试“重装”,更别慌着连 phpMyAdmin —— 此刻任何操作都可能给攻击者留出空档。
顺手查下 /tmp、/var/www/html 下有没有陌生的 .php 文件,特别是名字像 shell.php、1.php 或带 base64 编码内容的脚本。有就先不动,截图留证,再记下最近登录服务器的 IP 和时间。之前有个做母婴电商的朋友,就是恢复前漏看了一个藏在 /wp-content/plugins/ 里的伪装插件,上线两小时又被清了一次库。
你有可用的备份吗?这才是恢复的基石
现在掏出手机或笔记本,写下三个问题:
- 上次手动导出数据库是哪天?
- 网站文件打包存在哪儿?是阿里云 OSS、腾讯云 COS,还是你电脑桌面上那个叫“backup_2024”的文件夹?
- 这份备份,你亲手还原测试过吗?
别信“主机商说有备份”。很多虚拟主机的所谓“自动备份”,其实和你的网站共存于同一块物理硬盘。去年有位做知识付费的老师,出事时联系客服要备份,对方回复:“快照昨天刚被勒索病毒加密了”。
靠谱的备份得满足三点:有多个时间点、不在同一台机器上、你随时能下载下来。哪怕只是每周六凌晨用一条 mysqldump 命令 + tar 打包,再拖到微信文件传输助手,也比没有强。
从备份恢复的正确姿势是什么?
找到最近一份干净的备份后,千万别直接往线上库写。
先在另一台干净服务器(或本地 Docker 环境)里恢复一遍:导入 SQL,解压文件,改好 wp-config.php 里的数据库地址、用户名、密码。重点看三处:
- 首页、文章页能不能正常打开
- 后台登录是否顺利
- 检查
index.php、footer.php里有没有被塞进来的可疑链接或 JS 调用
确认没问题了,再操作生产环境。恢复完立刻改数据库密码、FTP 密码、后台管理员密码,三者不能一样。有次我帮人恢复,他忘了改 WordPress 后台密码,黑客半小时后又登进来删了友情链接表。
没有备份?这些“救命稻草”可能还有用
真没备份,别放弃,试试这几条路:
- 立刻联系主机商:发工单,明确写“请求调取底层存储快照(snapshot),时间范围是过去72小时内”。有些服务商的快照藏在控制台角落,不主动申请根本不会给你。
- 翻搜索引擎快照:在百度搜
site:yourdomain.com,点“百度快照”,能扒出不少文章正文、页面标题、甚至部分 meta 描述。虽然拿不到用户数据,但至少能快速重建首页和栏目页。 - 查 CDN 缓存:如果你开了 Cloudflare 或腾讯云 CDN,去后台看“缓存预设”或“缓存规则”,有些静态 HTML 页面可能还躺在边缘节点里。导出来粘贴到新库,至少保住 SEO 元素。
这些救不了订单和用户注册记录,但能让你的网站在24小时内重新“看起来像活的”。
恢复后,如何向用户和搜索引擎交代?
网站能打开了,别急着发朋友圈庆祝。先做两件事:
- 在首页顶部加个简洁公告栏(CSS 浮层就行),写清楚:“X月X日因技术故障导致数据临时中断,目前已恢复至X月X日备份状态。如有近期提交未收到反馈,请通过邮箱 XXX@xxx.com 联系我们。”
- 登录你正在用的搜索平台后台:如果是 Google Search Console,去“覆盖率”里批量标记那些 404 页面为“已修正”,再提交新版 sitemap;如果用百度搜索资源平台,进“索引量工具”→“死链提交”,把失效 URL 清掉。
用户不介意你出错,但反感你装没事。我见过一个做考研资料的站点,公告里写了具体哪天的数据丢了、怎么补救、后续怎么防,评论区反而刷屏“挺住,我们等更新”。
如何建立“删库也打不垮”的防御体系?
教训不用交两次钱。接下来这四件事,挑最痛的一个先干:
- 今晚就加个自动备份脚本:Linux 服务器上,新建一个
backup.sh,写两行:再用mysqldump -u 用户名 -p密码 数据库名 > /backup/db_$(date +%F).sql tar -zcf /backup/site_$(date +%F).tar.gz /www/wwwroot/your-site.comcrontab -e加一句0 3 * * * /bin/bash /backup/backup.sh,从此每天凌晨3点自动生成新备份。 - 砍掉所有不必要的权限:WordPress 后台的数据库用户,只给
SELECT, INSERT, UPDATE, DELETE,去掉DROP和CREATE;FTP 账号只指向/www/wwwroot/your-site.com,别给根目录权限。 - 给关键目录装个“警报器”:用
inotifywait监控/www/wwwroot下的文件增删,一旦有异常,发邮件或微信提醒你。 - 每季度做一次“假删库”演练:挑个周末,自己手动删掉测试库,然后从备份里恢复。跑不通?马上修,别等真出事。
今天下班前就能做的一件事
打开你常用的宝塔面板(或 cPanel / SSH),直接进【数据库】→【phpMyAdmin】,选中你的主库,点“导出”,格式选“SQL”,点击“执行”,把文件保存到本地。
接着进【文件】管理,找到网站根目录(比如 /www/wwwroot/your-site.com),勾选全部文件,右键“压缩”,下载到你电脑。
最后,把这个 SQL 文件 + ZIP 包,拖进你天天用的微信聊天窗口,发给自己,或者上传到你已经在用的网盘(如百度网盘、iCloud、OneDrive)。
整个过程20分钟,但它会让你下次看到“数据库连接失败”时,手是稳的。