不能恢复,除非是通过宝塔数据库页面点击【删除】按钮操作的;其他方式如命令行、phpMyAdmin、API调用或站点删除时勾选删库均不进入回收站,且需满足回收站启用、未超保留期、/www/.Recycle目录权限正常三个前提。

不能恢复,除非你删的是用宝塔界面点“删除数据库”操作的——回收站只收这个,其他全绕过。
回收站根本没记录?先确认是不是“假删除”
宝塔的数据库回收站只捕获一种行为:在【数据库】页面点击某库右侧的【删除】按钮(带回收站图标)。所有其他方式都不会进回收站:
-
rm -rf /www/server/data/mydb或drop database mydb命令行操作 → 直接物理销毁 - 用 phpMyAdmin、DBeaver 等工具删库 → 不经过宝塔逻辑,无记录
- 通过 API 调用删除(如宝塔 API 的
/database/del_database)→ 默认不走回收站,除非显式传参recycle=1 - 站点被“删除网站”时勾选了“同时删除数据库” → 这个动作会进数据库回收站,但很多人误以为是“一起删了就没了”,其实它在
【数据库】→ 右上角【回收站】里
回收站里找不到?检查三个硬性前提
就算你确实是点按钮删的,也不代表一定能看见。以下任一条件不满足,回收站就是空的:
-
【设置】→【备份还原】→【启用回收站】是关闭状态 → 所有删除跳过回收站 - 删库时间已超
回收站文件保留天数(默认7天,2026年4月1日系统默认仍为7天)→ 到期自动清空,不可逆 -
/www/.Recycle/目录权限异常或不存在 → 比如面板升级失败后该目录属主变成root:root,而宝塔运行用户是www,写不进去
验证方法:SSH 登录后执行 ls -ld /www/.Recycle 和 stat /www/.Recycle,看是否可被 www 用户写入。
没回收站也没备份?别急着跑 extundelete,先看 binlog 还在不在
比文件恢复更现实的路径其实是 MySQL 自身的日志。只要 log_bin 开着,且误删发生在最近几天内,就有机会捞回 INSERT/UPDATE 记录:
- 先确认:
mysql -e "SHOW VARIABLES LIKE 'log_bin';"→ 输出ON才能继续 - 查 binlog 列表:
ls -lt /www/server/data/mysql-bin.*,挑时间戳在误删前的最新一个 - 定位删库前的临界点:
mysqlbinlog --base64-output=DECODE-ROWS -v /www/server/data/mysql-bin.000005 | grep -A 5 -B 5 "DROP DATABASE\|CREATE DATABASE" - 提取删库前的全量数据快照很难,但提取某张表的增量插入非常可行 —— 比如只丢了
users表,就用mysqlbinlog截出对应 INSERT 语句重放
注意:mysqlbinlog 解析结果里若含 SET @@SESSION.GTID_NEXT,说明开了 GTID,就不能直接重放,得先 SET SESSION GTID_NEXT='AUTOMATIC' 再执行。
真正卡住人的地方不是技术多难,而是误删后第一反应去翻回收站,发现没有,就立刻认定“完了”。其实得倒推:删的操作路径是什么?回收站开关开着吗?磁盘上 /www/.Recycle 目录有没有写权限?binlog 文件还在不在?每一步都得实锤,而不是凭感觉跳结论。

















