Heute beschäftigen wir uns einmal mit der Datenbank, die sozusagen das Gedächtnis von WordPress darstellt. Im Grunde genommen besteht WordPress nämlich aus zwei Teilen, einmal den Dateien auf dem Webspace, die (vereinfacht gesagt) festlegen, wie die Website aussieht und welche Funktionen zur Verfügung stehen, und der Datenbank, in der praktisch alle Einstellungen sowie die Inhalte von Beiträgen, Seiten und Kommentaren gespeichert werden. Auch die registrierten Benutzer werden hier abgespeichert. Im Betrieb fragt WordPress dann die verschiedenen Informationen von der Datenbank ab um dem Besucher Inhalte anzuzeigen, registrierten Nutzern Zugang zum Dashboard zu gewähren, und was sonst noch so auf der Website passiert.

Im Normalbetrieb kümmert sich WordPress um die Kommunikation mit der Datenbank, so dass man als Admin in der Regel selten direkt an der Datenbank arbeiten muss. Ab und zu ist es aber dennoch sehr praktisch, die Inhalte der Datenbank manuell ändern zu können. Allerdings sollte man dazu wirklich wissen, was man tut, sonst kann man auch großen Schaden anrichten. Deshalb ist eine der wichtigsten Regeln: Immer ein Backup anlegen, bevor man Sachen an der Datenbank ändert! Mehr zum Thema Backup gegen Ende dieses Artikels.

Das Standardwerkzeug für den Zugriff auf die Datenbank heißt „phpMyAdmin“ und wird in der Regel vom Webhoster gleich mit angeboten. Oft gibt es aus dem Verwaltungsbereich, wo man Datenbanken neu anlegen kann, auch gleich eine Möglichkeit, auf die einzelnen Datenbanken per phpMyAdmin zuzugreifen. Die Oberfläche zeigt eine Menge Informationen an, hat man den Bogen allerdings erst einmal heraus, ist die Handhabung nicht so kompliziert, wie es anfangs den Eindruck macht.

Der Zugang zur Datenbank ist eine Art Generalschlüssel

Mit phpMyAdmin lassen sich alle Informationen in der Datenbank bearbeiten. So eine Datenbank besteht aus einzelnen Tabellen, die jeweils einen bestimmten Namen haben, der sinnvoll den Zweck der Tabelle beschreiben sollte. Bei WordPress wären das beispielsweise Namen wie „wp_options“ (dort werden die meisten Einstellungen von WordPress, Plugins und Themes abgespeichert) oder wp_users (darin finden sich die Nutzernamen, die zugehörigen Passwörter, E-Mailadressen, das Registrierungsdatum, etc.). Den ersten Teil inklusive Unterstrich nennt man „Tabellen-Präfix“, dieser lässt sich bei der Installation von WordPress frei angeben. Aus Sicherheitsgründen sollte er auch vom Standardwert „wp_“ abweichen, das erschwert Angriffe auf die Datenbank. Für diese Abhandlung verwende ich trotzdem die Standard-Namen, damit stets klar ist, um welche Tabelle es geht.

Bevor es nun ans Eingemachte geht, ein Wort der Warnung: Unbefugte können mit dem Zugriff auf die Datenbank auch eine Menge ärgerliche Sachen anstellen. Das reicht von simplem Vandalismus wie dem Löschen von Beiträgen und/oder Nutzern bis hin zur Verseuchung der Bloginhalte mit Spam-Links oder Malware. Alle Zugangsdaten, mit denen der Zugang zur Datenbank gelingt, sollten deshalb wirklich nur vertrauenswürdigen Personen ausgehändigt werden. Und hier wird auch klar, warum der Webspace selbst gut abgesichert werden muss: WordPress muss selbst ja auch die Zugangsdaten für die Datenbank kennen. Gelingt es also einem Angreifer, WordPress zu überlisten und sich auf dem Webspace einzunisten, kann er praktisch auch auf die Datenbank zugreifen, indem er sich die Zugangsdaten aus der wp-config.php verschafft. Deshalb ist es auch nicht immer damit getan, alle Dateien vom Webspace zu löschen, um eine Infektion komplett zu beseitigen.

Kommen wir nun zum Tipp für heute:

  • Hilfe, meine WordPress-URL stimmt nicht mehr!

Dies tritt immer mal wieder auf, wenn man WordPress von einer Basis-URL auf eine andere umstellen will. Arbeitet man beispielsweise im Hintergrund an einem neuen Design auf einer Subdomain, kann es nach der Umstellung auf die Hauptdomain zu Problemen kommen, wenn zwei Einträge in der Datenbank nicht korrekt sind. Diese finden sich in der Tabelle „wp_options“. In phpMyAdmin zeigt ein Klick auf den Tabellennamen in der Spalte mit der Tabellenauflistung ganz links zum Inhalt der Tabelle. Jede Tabelle besteht aus einer oder mehreren Spalten, die jeweils eine bestimmte Information speichern. Ähnlich wie auf einem Blatt in einer Tabellenkalkulation kann jedes Datenfeld der Tabelle über die Angabe von Spalte und Zeile abgefragt werden. Die Abfrage muss dabei nicht auf die Nummer der Zeile beschränkt sein, man kann auch nach bestimmten Inhalten suchen, oder Daten aus anderen Tabellen als Referenz für die Suche nach Inhalten benutzen.

Für uns sind zunächst einmal zwei Spalten interessant: „option_name“ und „option_value“. Jede Zeile die in phpMyAdmin angezeigt wird, enthält ein Pärchen zusammengehöriger Informationen. In „option_name“ steht jeweils, um welche Information es sich in dieser Zeile handelt, und „option_value“ – leicht zu erraten – steht dann der eigentliche Wert. Um nun die Basis-URL unserer WordPress-Installation zu überprüfen, suchen wir in der Tabelle nach zwei Zeilen in der Datenbank. Für die erste suchen wir nach der Zeile, in der in „option_name“ der Inhalt „siteurl“ steht. Die zweite wichtige Zeile finden wir dort, wo in „option_name“ das Wort „home“ steht. In diesen beiden Zeilen speichert WordPress die Informationen, die im Dashboard unter Einstellungen/Allgemein eingegeben werden können.

Lösung mit phpMyAdmin direkt in der Datenbank

Zur Bearbeitung gibt es je nach Version von phpMyAdmin zwei Wege: Entweder öffnet ein Doppelklick auf das fragliche Feld ein Bearbeitungsfenster direkt dort, oder es ist notwendig, auf das Bearbeiten-Icon (den schreibenden Stift) in der jeweiligen Zeile zu klicken. Ein Tipp: Die allermeisten Icons und Felder liefern hilfreiche Tooltips, wenn man mit dem Mauszeiger auf ihnen stehenbleibt. Die große Bearbeitungsmaske sieht erst einmal verwirrend aus, dort gibt es auch viele Manipulationsmöglichkeiten. Für unseren Zweck reicht es erst einmal aus, den dort angezeigten falschen Inhalt zu korrigieren und dann auf den OK-Button zu klicken, der direkt unterhalb der Liste der einzelnen Datenfelder für die bearbeitete Zeile steht.

PhpMyAdmin zeigt übrigens immer nur eine bestimmte Anzahl Zeilen aus der Tabelle an. Oberhalb der Datenbankzeilen gibt es deshalb Navigations-Buttons, um seitenweise vor und zurück zu blättern und ganz ans Ende beziehungsweise ganz an den Anfang zu springen. Die Bedienung funktioniert eigentlich ganz intuitiv, am besten einfach ausprobieren. Vom reinen Durchblättern geht nichts kaputt. 😉 Wenn die gesuchte Zeile also nicht auf der ersten Seite erscheint, einfach so lange durch die Tabelle blättern, bis man sie gefunden hat. Man kann sich die Suche auch erleichtern, indem man die Tabelle nach dem Inhalt einer Seite sortiert. Dazu reicht es aus, einfach auf den Spaltenkopf zu klicken, wo der Name der Spalte steht. Mit dem ersten Klick wird die Tabelle in der aktuellen Sortierrichtung entsprechend dem Spalteninhalt sortiert angezeigt, ein zweiter Klick kehrt die Sortierrichtung um. Sucht man beispielsweise einen Wert, der mit „t“ beginnt, geht es meist schneller, die Tabelle absteigend zu sortieren, so dass die Zeilen mit „z“ zuerst angezeigt werden. Dann muss man weniger blättern, als wenn man bei „a“ beginnt.

Weitere interessante Sachen in der Tabelle „wp_options“ sind beispielsweise die Liste der aktivierten Plugins („active_plugins“), der Name des aktiven Themes („current_theme“) oder auch die Information, ob Nutzer sich registrieren dürfen („users_can_register“). Bei letzterem bedeutet die Zahl Null, dass die Registrierung abgeschaltet ist, mit dem Wert Eins lässt sie sich aktivieren. Hilfreich ist das beispielsweise, wenn man sich völlig aus dem eigenen Blog ausgesperrt hat und keine Zugangsdaten mehr weiß. Allerdings benötigt man dann noch einige andere Klimmzüge, um Administrator-Zugriff zu erlangen.

Zum Schluss noch ein Tipp in Sachen phpMyAdmin: Ganz am oberen Rand gibt es eine Navigationszeile, in der einem phpMyAdmin anzeigt, wo man sich gerade befindet. Klickt man hier auf den Namen der Datenbank, wird einem kein einzelner Tabelleninhalt mehr angezeigt, sondern eine zusammenfassende Liste der einzelnen Tabellen in der Datenbank. Mit einem Klick auf den Reiter „Exportieren“ kann man nun mit wenigen Handgriffen den Datenbankinhalt in Form einer SQL-Datei (oder auf Wunsch auch in anderen Formaten für besondere Zwecke) exportieren und sich so eine Sicherung der Datenbank anlegen. Das ist natürlich immer anzuraten, bevor man Änderungen daran vornimmt, Vorsicht ist die Mutter der Porzellankiste.

Das Gegenstück zum Export findet sich auf dem Reiter „Importieren“, allerdings sollte so ein Import außer in speziellen Fällen immer nur in eine komplett leere Datenbank erfolgen, damit alle Informationen aus der SQL-Datei auch korrekt in die Datenbank eingespielt werden können. Analog zum Export und Import der ganzen Datenbank lässt sich das auch für einzelne Tabellen durchführen, dazu klickt man einfach auf eine der Tabellen in der Tabellenauflistung. Es gibt Fälle, da ist es sinnvoller, nur eine einzelne Tabelle zu exportieren bzw. importieren, im Laufe der Zeit bekommt man ein Gespür dafür, wann welche Variante sinnvoller ist.

Ein paar Anregungen zum Schluss

Zum Experimentieren ohne Risiko empfehle ich übrigens, einfach eine weitere Datenbank anzulegen. Dann exportiert man aus der „echten“ Datenbank alle Informationen und importiert die erhaltene SQL-Datei in die neu angelegte Datenbank. So kann man gefahrlos die ersten Schritte in der Handhabung von phpMyAdmin üben. Hat man genügend Übung beim Bearbeiten der Datenbank gesammelt, kann man die Experimente-Datenbank ganz einfach mit der WordPress-Installation „verheiraten“, indem man die Zugangsdaten zur Datenbank in der wp-config.php entsprechend ändert. Tipp: Die bestehenden Zeilen einfach jeweils kopieren und erneut einfügen. Danach jeweils eine der Zwillingszeilen auf die Zugangsdaten (meist Datenbankname, -nutzer und -passwort) der Testdatenbank abändern und die Zeilen für die „echte“ Datenbank mit zwei Schrägstrichen (//) als Kommentar markieren. Zum Wechsel zwischen den beiden Datenbanken reicht es dann, die Kommentarzeichen jeweils umzusetzen.

Natürlich kann man auch eine komplette zweite WordPress-Installation dafür verwenden, wer ganz sicher gehen will, wird das sicherlich auch tun. Allerdings ist dann die Einrichtung etwas aufwendiger, bis beide Installationen wirklich komplett identisch sind. Letztlich ist das Resultat praktisch deckungsgleich, nur der Weg dorthin unterscheidet sich.

Wenn ich auf den Wortzähler schaue, dann war das für heute schon wieder eine ganze Menge an Informationen. Morgen geht es auch wieder richtig ans Eingemachte, dann kümmern wir uns um den bequemen Umzug einer WordPress-Installation. Bis dann!