Al verschillende jaren blog ik via WordPress. Een handig en steeds up to date content management systeem. Eerst blogde ik via WordPress.com om later over te schakelen naar een zelf gehoste versie. Om allerlei redenen ben ik in al die jaren ook af en toe van webhost veranderd. Bij de verhuis van mijn WordPress website stootte ik dan af en toe op problemen met de database. Meestal was dit te herleiden tot de tabel prefix die zorgde dat de site niet goed geladen werd. Maar hoe heb ik dat toen eigenlijk opgelost?
Fout bij installatie door database tabel prefix probleem
Ondanks dat je bij het verhuizen van je website denkt dat je alles goed hebt gedaan, lukt de installatie niet altijd even goed. Meestal heb je onderstaande stappen reeds uitgevoerd:
- De domeinnaam gekoppeld aan het hosting pakket
- Het installeren van de website via bijvoorbeeld Installatron
- Vervolgens importeer je de SQL database succesvol
Alles lijkt goed op het eerste zicht goed te staan. Maar wat blijkt bij het testen van je site? De website is toch niet goed geïnstalleerd. De zoektocht naar de oorzaak kan beginnen. Na enige tijd zoeken blijkt het probleem te zitten in het gebruik van de prefix in de database tabellen. Doordat je een nieuwe installatie hebt uitgevoerd en je je database van je website hebt geïmporteerd, staan er twee tabellen in de database. Beide tabellen hebben elk een verschillende voorvoegsels (prefix). De gebruikte prefix kan bij de geïmporteerde database anders zijn dan de tabellen die worden gecreëerd bij de installatie van de website.
Maar hoe los je nu eigenlijk dat probleem op? Laten we beginnen met uit te leggen wat de prefix van een tabel juist is.
Wat is een prefix tabel?
De prefix van een tabel in een database is het voorvoegsel dat gebruikt wordt bij elke tabel die in de database voorkomt. Bij WordPress websites is dat voorvoegsel standaard “wp_”. Voordeel hiervan is dat je snel kan zien bij welk CMS een tabel hoort in het geval je meerdere Content Management Systemen gebruikt zoals WordPress en Joomla in één database..
Waarom de tabel prefix aanpassen?
Doordat standaard de prefix is ingesteld op “wp_” zijn WordPress-websites ook een belangrijk doelwit bij website aanvallen. Bij deze aanvallen wordt er vooral gericht op verschillende databasetabellen met geautomatiseerde scripts, SQL-injectie en andere kwaadaardige code. Het is dan ook onnodig om te zeggen dat het belangrijk is om uw database te beschermen en regelmatig back-ups te (laten) maken. Eén van de beste manieren om de database van uw site te beveiligen, is om het voorvoegsel van de standaardtabel te wijzigen. Zo zullen kwaadaardige aanvallers het een pak moeilijker hebben om je website te ‘bevuilen’.
Conflict met prefix oplossen
Standaard wordt de tabel met de prefix “wp_” aangemaakt. In je installatie via het script van WordPress of wanneer deze via Installatron wordt geïnstalleerd kan je deze tabel prefix reeds zelf aanpassen. Bij Installatron dien je hiervoor te gaan naar geavanceerde opties.
Bij een verhuis van je website zal je meestal de standaard “wp_” prefix gebruiken om je website te installeren. Je krijgt dan ook als eerste een standaard “Hello World” bericht te zien in een standaard template. Naast het uploaden van je template en eventueel plugins dien je ook je database te importeren.
Hoe zorgen dat de website wel werkt
Om er nu voor te zorgen dat de juiste prefix van je oorspronkelijke tabel wordt gekoppeld aan de website, dien je deze prefix aan te passen in één van de WordPress bestanden, namelijk de wp-config.php.
Ik ga als volgt te werk en in deze volgorde:
- Ik verwijder de nieuw aangemaakte WordPress tabellen via phpMyAdmin
- Vervolgens importeer ik in de database de tabellen van mijn website.
- Daarna ga ik naar de ‘wp-config.php‘ file en wijzig daar de DB_NAME, DB_USER en DB_PASSWORD in de gegevens van de aangemaakte database
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'HIER INVULLEN');
/** MySQL database username */
define('DB_USER', 'HIER INVULLEN');
/** MySQL database password */
define('DB_PASSWORD', 'HIER INVULLEN');
4. Tevens pas ik in de wp-config.php de prefix aan naar deze van de geïmporteerde tabel
$table_prefix = 'wp_'
wijzig dit bijvoorbeeld in
$table_prefix = 'nieuweprefix_'
Als je nu naar je website gaat zal je zien dat je website terug online is zoals bij je vorige host.
Tabel prefix aanpassen zonder verhuis
Maar ook als je je website niet verhuist is het veiliger om niet de standaard ‘wp_’ prefix te gebruike. Dit kan gelukkig op een snelle manier. Hiervoor heb je net zoals bij de stappen hierboven ook toegang nodig tot bv Direct Admin en phpMyAdmin. Ook dien je het ‘wp-config.php‘ bestand aan te passen zoals hierboven besproken.
Om een tabel prefix van een reeds bestaande website aan te passen ga je via je Direct Admin, of andere administratie gedeelte, naar phpMyAdmin. Selecteer alle tabellen waarvan je de prefix wil aanpassen.
Daarna kies je uit het drop-down menu ‘Vervang tabelvoorvoegsel’. Hierna geef je jouw nieuwe tabel prefix in en laat je de opdracht uitvoeren. Hierna zal je zien dat de prefixen van jouw WordPress tabel zijn aangepast. Echter zijn er nog enkele instellingen in je database die nog verwijzen naar je oude prefix. Deze kan je aanpassen door volgende SQL opdracht te laten uitvoeren.
update nieuweprefix_usermeta set meta_key = 'nieuweprefix_capabilities' where meta_key = 'oudeprefix_capabilities';
update nieuweprefix_usermeta set meta_key = 'nieuweprefix_user_level' where meta_key = 'oudeprefix_user_level';
update nieuweprefix_usermeta set meta_key = 'nieuweprefix_autosave_draft_ids' where meta_key = 'oudeprefix_autosave_draft_ids';
update nieuweprefix_options set option_name = 'nieuweprefix_user_roles' where option_name = 'oudeprefix_user_roles';
Vervang hierbij ‘nieuweprefix’ door jouw gekozen prefix uit de vorige stap. Bij ‘oudeprefix’ vul je dan de oorspronkelijke prefix in zoals bv ‘wp’ (de standaard WordPress prefix). Druk dan op ‘starten’ en de SQL opdracht zal worden uitgevoerd. Hierna is je database klaar om je website te tonen met de nieuwe prefix.