Dieser Blog ist mein persönlicher Blick auf die Welt der Programmierung – mit Themen zu #Webentwicklung und #Gamedev. Hier gibt's Wissen ohne Werbung – kompakt und in Textform. Für alle, die lieber lesen statt vorspulen.

WordPress: Datenbank-Umzug leicht gemacht

Am 29. September 2019 / von Nick / in Allgemein / 2 Min. Lesedauer

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

Schlagwörter zu diesem Beitrag

terminaltutorialwordpress