WordPress: Datenbank-Umzug leicht gemacht
Wie oft hast du schon ein WordPress Backup auf deinem lokalen Rechner erstellt und musstest danach sämtliche URLs in der Datenbank an deine lokale Domain anpassen? Oder der Onlinegang deines WordPress Blogs steht an und du musst alles auf die neue Domain mappen. Dafür wird erst einmal Onkel Google befragt, der die richtigen SQL Statements für den Datenbank-Umzug ausspuckt.
Auch wenn ich mich über jeden Seitenaufruf, der bei dieser Suche generiert werden würde, freuen würde, möchte ich dir stattdessen ein einfaches Bash Skript an die Hand geben.
Zu Allererst musst du die Datei mit entsprechenden Rechten erstellen. Am besten legst du das Skript im bin
Verzeichnis deines Homeverzeichnisses an. Dieser Ordner ist oft schon in deinem PATH
enthalten, demnach kannst du das Skript von überall aus deinem Terminal aus aufrufen. Danach muss die Dateiberechtigung noch um das Ausführungs-Recht ergänzt werden.
touch ~/bin/move-wordpress.sh chmod +x ~/bin/move-wordpress.sh
Kopier nun den folgenden Code in deine Datei. Das Skript fragt dich nacheinander nach Datenbank-Nutzer, -Namen, -Prefix und nach der alten sowie neuen URL. Anschließend wird mit dem mysql
Befehl die Datenbank aktualisiert.
Insgesamt werden drei Datenbanktabellen aktualisiert: posts
, postmeta
und options
. Mit Hilfe der MySQL Funktion REPLACE
werden so alle Vorkommnisse der alten URL mit der neuen URL ersetzt.
An dieser Stelle ein Dank an WP Beaches, von wo ich bisher immer die SQL Statements kopiert habe.
#!/bin/bash
#
# This script is used to update database url entries for wordpress.
#
# © Nick Böcker 2019
# User input mysql username
read -p "Enter mySQL username [root]: " USER
USER=${USER:-root}
# User input mysql database
read -p "Enter database name: " DATABASE
# User input mysql database prefix
read -p "Enter database prefix [wp_]: " PREFIX
PREFIX=${PREFIX:-wp_}
# User input mysql new and old url
read -p "Enter old url: " OLD_URL
read -p "Enter new url: " NEW_URL
# Execute command with given credentials and parameters. Ask for password.
mysql -p --user="$USER" --database="$DATABASE" --execute="UPDATE ${PREFIX}posts SET guid = REPLACE(guid, '${OLD_URL}', '${NEW_URL}'); UPDATE ${PREFIX}posts SET post_content = REPLACE(post_content, '${OLD_URL}', '${NEW_URL}');UPDATE ${PREFIX}postmeta SET meta_value = REPLACE(meta_value, '${OLD_URL}', '${NEW_URL}'); UPDATE ${PREFIX}options SET option_value = REPLACE(option_value, '${OLD_URL}', '${NEW_URL}');"
echo 'Done'
Now it’s as easy as
$ ~/bin/move-wordpress.sh Enter mySQL username [root]: deinuser Enter database name: deinedatenbank Enter database prefix [wp_]: deinpraefix_ Enter old url: http://alte-url.de Enter new url: http://neue-url.de Enter password: Done