akismet - Einträge in wp_commentmeta entfernen

Diesen Beitrag schrieb ich 6 Jahre und 4 Monate zuvor; die nachfolgenden Ausführungen müssen heute nicht unbedingt noch genau so funktionieren. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 2 Minuten

akismet war lange Zeit der Quasi-Standard in Sachen Spam-Bekämpfung unter WordPress, und auch auf meiner Präsenz war es eine ganze Weile aktiv. Als ich es entfernen wollte stellte ich fest: es ist ganz schön hartnäckig…

Wie es dazu kam

Irgendwann war der Punkt erreicht, an dem ich das Plugin einfach nicht mehr einsetzen mochte; denn einerseits hatte ich zunehmend Probleme mit False Positives, und das war recht nervig. Andererseits wurde meine Datenbank größer und größer – unglaublich, wie akismet den Datenbestand aufblasen kann. Aber auch aus Datenschutz-Sicht finde ich es bedenklich: vereinfacht ausgedrückt übermittelt das Plugin jeden neuen Kommentar an die akismet-Server in den USA und prüft ab, ob der Wortlaut des Kommentars, die hinterlegte E-Mail-Adresse oder die IP-Adresse des Absenders dort als SPAM markiert ist. Darauf müssen die Kommentatoren vorher hingewiesen werden, Abmahnungen können sonst die Folge sein (diesen Artikel und seine Verweise fand ich in dem Zusammenhang recht erhellend).

Vorsicht solltet ihr auch bei der Wahl der verwendeten Version walten lassen: Basic ist für den privaten Anwender kostenfrei, doch schon wenn ihr GoogleAds oder ähnliches schaltet fallt ihr nicht mehr in diese Kategorie und müsst den Service bezahlen. Ich habe für mich dazu entschieden, das Plugin im ersten Schritt zu deaktivieren – und im zweiten dann zu löschen. Um jedoch auch die Datenbank zu bereinigen war etwas mehr Aktion nötig – ich zeige es euch nachfolgend anhand einer relativ überschaubaren Beispiel-WordPress-Installation, und ihr könnt euch vorstellen, dass bei einer wirklich großen Seite so einiges zusammen kommt…

Ermitteln der Einträge

mysql> SELECT table_name "Table Name",
    -> table_rows "Rows Count",
    -> round(((data_length + index_length)/1024/1024),2) "Table Size (MB)"
    -> FROM information_schema.TABLES
    -> WHERE table_schema = "WordPress"
    -> AND table_name ="wp_commentmeta";
+----------------+------------+-----------------+
| Table Name     | Rows Count | Table Size (MB) |
+----------------+------------+-----------------+
| wp_commentmeta |        989 |            0.28 |
+----------------+------------+-----------------+
1 row in set (0.00 sec)

Löschen der Einträge

mysql> delete from wp_commentmeta
    -> WHERE meta_key like "%akismet_%";
Query OK, 611 rows affected (0.17 sec)

Abschließende Überprüfung

mysql> SELECT table_name "Table Name",
    -> table_rows "Rows Count",
    -> round(((data_length + index_length)/1024/1024),2) "Table Size (MB)"
    -> FROM information_schema.TABLES
    -> WHERE table_schema = "WordPress"
    -> AND table_name ="wp_commentmeta";
+----------------+------------+-----------------+
| Table Name     | Rows Count | Table Size (MB) |
+----------------+------------+-----------------+
| wp_commentmeta |        378 |            0.09 |
+----------------+------------+-----------------+
1 row in set (0.00 sec)