WordPress Tabellenpräfix wp_ nachträglich in der Datenbank ändern
- Code für PHPMyAdmin & Plugin -In diesem Artikel erfährst du, wie du das WordPress Tabellenpräfix „wp_“ nachträglich, also auch bei einer bestehenden Installation, ändern kannst, um deine Seite vor SQL-Injections zu schützen.
Bei einer Installation von WordPress wird von Haus das Tabellenpräfix wp_ standardmäßig vergeben. Dass diese Standardeinstellung nicht nur ihre Vorteile hat, wird dem Webseitenbetreiber spätestens bei einer SQL-Injektion durch Hacker bewusst. Dabei kann ein Angreifer Code in die Datenbank schleusen, welcher anschließend ausgeführt wird. Umfangreichere und ausführliche Informationen zu dem Thema findest du auf der Webseite von WordFence.
Da sich wohl niemand freiwillig diesem Risiko aussetzen möchte, findest du nachfolgend eine Anleitung, wie du nachträglich – heißt: bei bereits installiertem WordPress – das Präfix änderst, ohne alle deine Beiträge und generell alles in der Datenbank zu verlieren.
Was ist ein Tabellenpräfix und wieso sollte ich es ändern?
Nehmen wir mal an, es gäbe keine Präfixe und man will in einer Datenbank zwei WordPress-Blogs installieren. Die von WordPress benötigten Tabellen heißen wie folgt (bei älteren Installationen kann es sein, dass noch mehr Tabellen vorhanden sind):
- wp_commentmeta
- wp_comments
- wp_links
- wp_options
- wp_postmeta
- wp_posts
- wp_terms
- wp_term_relationships
- wp_term_taxonomy
- wp_usermeta
- wp_users
Würde es kein Präfix geben, oder würde man es beim Standardpräfix wp_
belassen, könnte man pro Datenbank nur eine WordPress-Instanz laufen lassen, da sonst beide Blogs die Tabellen überschreiben würden, weil diese den exakt selben Namen haben. Ein Präfix ist also lediglich eine Voranstellung von Buchstaben und Zahlen vor dem eigentlichen Tabellennamen.
Solltest du tatsächlich zwei WordPress-Seiten in der selben Datenbank installieren wollen, bist du also spätestens bei der zweiten Seite gezwungen, das Präfix zu ändern. Du könntest selbstverständlich einfach ein wp2_
daraus machen, ich empfehle dir jedoch bei jedem neuen Projekt einen aussagekräftigen Namen zu nehmen, damit es übersichtlich und schnell nachvollziehbar bleibt.
Ein weiterer Grund das Präfix zu ändern, ist der bereits oben angesprochene Sicherheitsaspekt. Dadurch, dass das wp_
Standard ist, wissen somit auch potentielle Hacker(-Bots) bescheid, wie die Tabellen in deiner Datenbank heißen. Durch eine SQL-Injektion kann so schädlicher Code ausgeführt werden. Dabei kann der Hacker den kompletten Zugriff auf deine Datenbank erhalten und z.B. deinen Benutzeraccount löschen, sodass du nicht mehr ins Backend kommst und er die volle Kontrolle über deine WordPress-Installation hat. Beide Fälle sind nicht wünschenswert, weshalb man es Außenstehenden so schwer wie möglich machen sollte, an die Datenbankinformationen zu kommen.
wp-config-sample.php
und suchst die Zeile mit dem Inhalt: $table_prefix = 'wp_';
Sollte Zeile 61 sein (Stand WP 3.8). Hier kannst du dann ein Präfix deiner Wahl bestimmen, indem du das wp_
abänderst.
Die Änderung im Vorfeld der Installation erspart dir nachträglich einiges an Arbeit und verhindert, dass etwas während der Änderung an der Datenbank schief läuft. Solltest du also vorhaben demnächst eine weitere Webseite mit WordPress aufzusetzen, ändere es direkt vor der Installation während du die Daten deiner Datenbank in die wp-config.php
einträgst.
Nachträgliche Änderung des Tabellenpräfixes bei bestehenden WordPress-Installationen
Solltest du die Änderung bei der Installation verpasst haben, nicht durchdrehen. Das Präfix lässt sich entweder manuell mit etwas mehr Aufwand oder automatisch durch ein Plugin auch nachträglich noch ändern. Im folgenden beschreibe ich dir beide Möglichkeiten.
Vorsicht: Was du auf jeden Fall machen solltest, unabhängig der gewählten Methode: Backup der Datenbank anlegen! Über PHPMyAdmin kann man seine Datenbank manuell exportieren oder du hast bereits ein Plugin installiert, das automatisch Backups anlegt. Wenn du kein Backup hast, erstelle also umgehend eins und lies anschließend erst weiter.
Präfix manuell über PHPMyAdmin ändern
1) Im ersten Schritt öffnest du die Datei wp-config.php
in deinem root-Verzeichnis und suchst bereits oben genannte Zeile:
$table_prefix = 'wp_';
$table_prefix = 'dingsda_';
Du kannst und solltest aber das Prefix so gestalten, dass man es nur schwer erraten kann – wie ein Passwort. Hierfür kannst du auch Zahlen oder weitere Unterstriche verwenden, sodass durchaus auch die Kombinationen „d1ng5da
“ oder „hs88_202
“ funktionieren.
Speichere die Datei ab und überschreibe ggf. die alte Version auf deinem Server. Beim Seitenaufruf wirst du sehen, dass die Seite zerschossen ist. Das ist aber kein Problem, da lediglich die Daten in der Datenbank nicht mehr deinen Änderungen entspricht. Deshalb geht es mit Schritt 2 weiter.
2) Jetzt musst du das Präfix in der bereits bestehenden Datenbank ändern. Hierzu loggst du dich in PHPMyAdmin ein, markierst alle gewünschten Tabellen und im Dropdown-Menü wählst du „Tabellenprefix ersetzen“. Im nachfolgenden Fenster musst du lediglich das alte (Standard ist „wp_
„) und das neue Präfix (in meinem Beispiel „dingsda_
„) eingeben und bestätigen.
RENAME table `wp_commentmeta` TO `dingsda_commentmeta`; RENAME table `wp_comments` TO `dingsda_comments`; RENAME table `wp_links` TO `dingsda_links`; RENAME table `wp_options` TO `dingsda_options`; RENAME table `wp_postmeta` TO `dingsda_postmeta`; RENAME table `wp_posts` TO `dingsda_posts`; RENAME table `wp_terms` TO `dingsda_terms`; RENAME table `wp_term_relationships` TO `dingsda_term_relationships`; RENAME table `wp_term_taxonomy` TO `dingsda_term_taxonomy`; RENAME table `wp_usermeta` TO `dingsda_usermeta`; RENAME table `wp_users` TO `dingsda_users`;
Vergiss hier nicht „dingsda“ durch dein Prefix zu ersetzen.
Solltest du zudem eine WordPress Multisite aktiv haben, füge zusätzlich noch nachfolgende Zeilen ein, um die Prefixe aller Tabellen zu ersetzen. Vergiss auch hier nicht „dingsda“ durch dein Prefix zu ersetzen.
RENAME table 'wp_blogs' TO 'dingsda_blogs' ; RENAME table 'wp_blog-versions' TO 'dingsda_blog_versions' ; RENAME table 'wp_registration_log' TO 'dingsda_registration_log' ; RENAME table 'wp_site' TO 'dingsda_site' ; RENAME table 'wp_sitemeta' TO 'dingsda_sitemeta' ;
Darüber hinaus musst du noch für jede durch ein Plugin angelegte Tabelle den Code entsprechend erweitern, als auch für jede Unterseite in deiner Multisite-Installation.
3) Es ist fast vollbracht, es fehlt nur ein kleiner Schritt. Du musst abschließend nur noch 2 kleine SQL-Befehle ausführen. Gehe dazu in PHPMyAdmin oben auf den Reiter „SQL“ – falls du dich nicht schon dort befindest – und gib diese beiden Befehle ein:
UPDATE dingsda_options SET option_name = REPLACE(option_name, 'wp_', 'dingsda_'); UPDATE dingsda_usermeta SET meta_key = REPLACE(meta_key, 'wp_', 'dingsda_');
Vergiss nicht das Präfix „dingsda_
“ durch dein selbst gewähltes zu ersetzen – an allen Stellen im Code!
Solltest du mit diesen beiden Befehlen durch sein, hast du es endgültig geschafft! Die Datenbanktabellenpräfixe deiner WordPress-Installation wurden erfolgreich geändert. Jetzt sollte deine Webseite beim Seitenaufruf wieder ganz normal funktionieren.
Download: Acunetix WP Security
[wp-pic type=“plugin“ slug=“wp-security-scan“ layout=“large“ align=“center“ ajax=“yes“ ]
Präfix automatisch über Plugin Acunetix WP Security ändern
Ist dir der manuelle Aufwand zu hoch oder hast du Angst, etwas an der Datenbank kaputtzumachen, besteht auch die Möglichkeit diesen ganzen Vorgang automatisiert über ein Plugin ausführen zu lassen.
Es gibt einige Plugins die das können, aber Acunetix WP Security (früher WP Security Scan) ist meine erste Wahl. Alles was es benötigt, sind Schreibrechte an der Datei wp-config.php. Diese müsstest du unter Umständen manuell per FTP für die Zeit der Umbenennung etwas hochschrauben (666 sollte in den meisten Fällen ausreichend sein).
Navigiere dazu nach erfolgreicher Installation des Plugins zu „WP Security -> Database“. In einer Inputbox kannst du dann dein neu gewähltes Tabellenpräfix eingeben und nach einem Klick auf „Start Renaming“ sind alle damit verbundenen Änderung ausgeführt. Generell ist das Plugin sehr umfangreich und kann dem ein oder anderen sicherlich weiterhelfen. Schaue dich einfach mal ein bisschen in den Einstellungen um.
Falls du über eine Mitgliedschaft bei WPMU Dev verfügst, habe ich abschließend noch eine gute Nachricht für dich: Das Plugin Defender kann ebenfalls automatisch das Tabellenprefix ersetzen und darüber hinaus noch viele weitere Sicherheitsaspekte integrieren.
Solltest du noch Fragen oder Anregungen zu dem Thema haben, hinterlasse doch einfach einen Kommentar.
Danke für diese Tipps. Ich habe zur Vorbereitung auf einen Blogumzug die Präfix der Zieldatenbank geändert und zuvor die neue Präfix in die wp-config.php eingetragen. Nachdem ich die Präfix in der Datenbank ebenfalls geändert hatte, funktioniert zwar alles. Ich bin auch korrekt eingeloggt. Leider habe ich jedoch keine Rechte mehr. Haben Sie eine Idee, woran es liegt und was ich falsch gemacht habe?
Vielen Dank für die tolle Anleitung.
In meiner wp-config.php habe ich den Standard-Präfix und in meiner Datenbank einen „erweiterten“.
Kann ich den Standard-Präfix in meiner wp-config.php mit dem DB-Präfix überschreiben oder funktioniert das nicht.