我最近受到了垃圾邮件攻击,这给了我一些需要解决的问题。在 24 小时内,我的博客收到了 50,000 多条评论,所有这些评论都毫无用处。好处是我的小型 VPS 服务器设法在大多数攻击中保持可用。
由于大量的评论,Drupal 中的正常管理形式变得有点无用。我一次只能删除 25 条评论,所以在一个小时后我决定我需要运行一些 SQL 语句来清除数据库中所有不需要的评论。我想我会写下我在帖子中使用的命令。
首先要做的是从评论表中删除任何未经批准的评论。
DELETE FROM comment WHERE status = 0;
接下来,field_data_comment_body 表中的评论正文字段也需要删除。这是通过交叉引用评论表中任何缺失的评论来完成的。
DELETE field_data_comment_body FROM field_data_comment_body LEFT JOIN comment ON field_data_comment_body.entity_id = comment.cid WHEREcomment.cidIS NULL;
评论也有修改,同样需要删除。
DELETE field_revision_comment_body FROM field_revision_comment_body LEFT JOIN comment ON field_revision_comment_body.entity_id = comment.cid WHEREcomment.cidIS NULL;
我应该在此注意,如果您在家中执行此操作并且您已将任何其他字段添加到您的评论中,那么您也必须注意这些表格。
最后,如果您安装了 Mollom,那么您还可以截断 Mollom 日志表。这可能充满了您刚刚删除的评论中的日志记录。
TRUNCATE TABLE mollom;
顺便说一句,根据 Mollom 报告,我在周末收到的垃圾邮件数量会接近 300,000 条评论。所以多亏了 Mollom,情况可能会更糟。