Kurz gesagt: Ja. Jede Installation braucht dazu ein eigenes Tabellen-Präfix, das du bei der Installation oder in der wp-config.php in der Zeile $table_prefix festlegst, zum Beispiel blog_ und shop_. Empfehlenswert ist das aber nur, wenn es nicht anders geht: Ein kompromittiertes Datenbank-Konto betrifft dann alle Websites. Wenn dein Hoster mehrere Datenbanken erlaubt, nutze für jede Website eine eigene mit eigenem Benutzer.
So funktioniert es
WordPress legt seine Tabellen mit einem Präfix an, standardmäßig wp_, also wp_posts, wp_options und so weiter. Hat eine zweite Installation ein anderes Präfix, etwa shop_, entstehen daneben die Tabellen shop_posts, shop_options. Beide Websites teilen sich die Datenbank, kommen sich aber nicht in die Quere.
Anleitung: Zweite Installation in derselben Datenbank
- Lade WordPress in ein eigenes Verzeichnis für die zweite Website hoch, siehe WordPress installieren.
- Gib bei der Installation dieselben Datenbankdaten ein wie bei der ersten Website.
- Trag im Feld „Tabellen-Präfix“ ein anderes Präfix ein, zum Beispiel
shop_. Nur Buchstaben, Zahlen und Unterstriche verwenden. - Schließe die Installation ab.
In der wp-config.php der zweiten Installation steht danach:
$table_prefix = 'shop_';
Vor- und Nachteile
| Vorteil | Nachteil |
|---|---|
| funktioniert mit Tarifen, die nur eine Datenbank bieten | ein gehackter Datenbank-Zugang gefährdet alle Websites |
| eine Datenbank weniger zu verwalten | Backups und Wiederherstellungen sind aufwendiger, weil du Tabellen einzeln auswählen musst |
| Umzug einer einzelnen Website ist fehleranfälliger | |
| eine große Website kann die Datenbank für alle ausbremsen |
Sollen die Websites eng zusammenarbeiten, etwa mit gemeinsamen Benutzerkonten, ist ein Netzwerk die bessere Wahl, siehe WordPress Multisite aktivieren.
Für Fortgeschrittene: Tabellen-Präfix nachträglich ändern
Willst du eine Website aus der gemeinsamen Datenbank herauslösen oder das Präfix ändern, reicht es nicht, die Tabellen umzubenennen. WordPress speichert das Präfix auch in Optionen und Benutzerdaten. Nach einem Backup gehst du so vor:
- Tabellen umbenennen, etwa
wp_postsinblog_posts. - In der Tabelle
blog_optionsden Eintragwp_user_rolesinblog_user_rolesumbenennen. - In
blog_usermetaalle Schlüssel, die mitwp_beginnen (etwawp_capabilities,wp_user_level), auf das neue Präfix umstellen. $table_prefixin derwp-config.phpanpassen.
Vergisst du Schritt 2 oder 3, meldet WordPress nach der Anmeldung „Du hast keine Berechtigung, auf diese Seite zuzugreifen“. Einfacher ist der Weg über einen Export: Die Website mit einem Migrations-Plugin exportieren und in eine neue Datenbank mit neuem Präfix importieren. Per WP-CLI siehst du das aktuelle Präfix und die Tabellen:
# Präfix der aktuellen Installation
wp db prefix
# Alle Tabellen dieser Installation, inklusive Plugin-Tabellen
# (ohne --all-tables-with-prefix zeigt WP-CLI nur die Kern-Tabellen)
wp db tables --all-tables-with-prefix
# Nur die Tabellen dieser Installation exportieren
wp db export blog-backup.sql --tables=$(wp db tables --all-tables-with-prefix --format=csv)
Ein geändertes Präfix ist übrigens kaum ein Sicherheitsgewinn. Automatisierte Angriffe über SQL-Injection lesen das Präfix einfach aus. Wichtiger sind aktuelle Plugins, siehe WordPress sicherer machen.
Frage dazu? Frag im Forum „Installation & Setup“: Zum WPDE-Forum
Häufige Fragen
Wie viele Installationen passen in eine Datenbank?
Technisch viele, praktisch begrenzen Größe und Last der Datenbank. Die meisten Hoster legen ein Speicherlimit pro Datenbank fest.
Können sich die Websites Benutzer teilen?
Mit den Konstanten CUSTOM_USER_TABLE und CUSTOM_USER_META_TABLE ist das möglich, aber fehleranfällig. Für gemeinsame Benutzer ist Multisite der vorgesehene Weg.