Contact Whatsapp

imaginez, créez. Un coup de main ?

Menu

Changer le préfixe des tables de la base de donnée WordPress

A l’installation de WordPress, il est tentant (et sans doute courant) de conserver le préfixe de base de donnée proposé par défaut : wp_ Sans doute qu’en tant qu’utilisateur lambda de WordPress, on ne voit pas tellement d’intérêt à changer cette valeur, qui plus est proposée par le script d’installation : la laisser en l’état ne change rien à l’utilisation du CMS et ne posera aucun problème particulier à l’usage.

A quoi ça sert ?

Un préfixe ajouté aux tables d’une base de donnée sert avant tout à organiser les données. Avec un préfixe, on peut en un coup d’œil identifier dans une base les tables gérées par WordPress (par exemple) ; et quoi de mieux que wp_ pour identifier les tables d’un site WordPress ? On pourra ainsi, dans une même base de donnée, créer de nouvelles tables qu’on affublera d’un préfixe différent et qu’on réservera à un autre usage. Dit simplement, le préfixe est une bonne pratique avant tout pour ranger ses données, même s’il est aussi recommandé pour d’autres raisons. Alors où est le problème, et pourquoi modifier cette valeur ?

Modifier le préfixe des tables de WordPress

Pourquoi c’est mieux ?

Dit simplement : pour des raisons de sécurité. Sous certaines conditions, personnaliser le préfixe de sa base de donnée WordPress préservera votre site d’une attaque là où le préfixe par défaut wp_ la laissera passer.

Imaginons qu’une faille de sécurité affecte un plugin ou un thème présent sur votre installation, et que cette faille soit de type injection SQL : elle permet à un utilisateur malveillant d’envoyer des données dans votre base, d’accéder a l’administration de votre site voire même à tout le serveur…

Heureusement, le plus souvent l’attaquant ne sait pas que votre site existe et ne l’a même jamais consulté. Il utilise un script qui scanne de façon automatique des milliers de sites internet et tente de les infecter. Ce genre de script automatisé utilise les paramètres les plus courants et cible donc les tables WordPress dont le préfixe wp_ n’a pas été modifié. Avec un préfixe personnalisé, ce type d’infection automatique échouera.

Un préfixe personnalisé suffit-il à protéger votre site WordPress ?

A l’évidence, non. Parmi les actions préventives à mettre en place pour sécuriser votre site, la modification du préfixe n’est pas la plus importante. Un site peu sécurisé ou non mis à jour se fera « hacker » quel que soit le préfixe que vous aurez choisi… Mais en cas d’attaque à grande échelle de sites sous WordPress qui contiennent une faille de type injection SQL, le préfixe personnalisé se montrera utile pour éviter l’infection.

Même si ça n’est utile que dans ce cas précis, ça l’est suffisamment pour être mis en place. L’option est proposée à l’installation, elle n’a aucun impact sur les performances du site et constitue une couche de protection supplémentaire. D’ailleurs, si votre WordPress a été installé automatiquement par un hébergeur, il y a des chances que le préfixe ait été modifié par le script d’installation.

Modifier le préfixe des tables WordPress
apres l’installation

Si vous vous n’avez pas pu personnaliser le préfixe à l’installation de WordPress, n’hésitez pas à le modifier. Plusieurs options s’offrent à vous : utiliser phpMyAdmin pour renommer les tables à la main, utiliser un plugin, ou demander à ChatGPT de vous fournir un script qui fera le travail à votre place.

Modifier le préfixe de sa base de donnée WordPress avec un script php.

Les étapes à suivre :

  • Faites une sauvegarde de la base de donnée du site au cas où les choses tournaient mal.
  • Créez un nouveau fichier php à la racine de votre site que vous nommerez à votre convenance (par exemple script-db.php)
  • Collez le code qui suit dans votre fichier et modifiez la valeur de $new_prefix

<?php
// À placer à la racine de votre site WordPress temporairement

require_once('wp-config.php');

// Ancien et nouveau préfixe
$old_prefix = 'wp_';
$new_prefix = 'secure123_';

// Connexion à la base
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if ($mysqli->connect_error) {
die("Erreur de connexion : " . $mysqli->connect_error);
}

// 1. Récupérer toutes les tables avec l'ancien préfixe
$tables = [];
$result = $mysqli->query("SHOW TABLES LIKE '{$old_prefix}%'");
while ($row = $result->fetch_row()) {
$tables[] = $row[0];
}

// 2. Renommer les tables
foreach ($tables as $table) {
$new_table = preg_replace('/^' . $old_prefix . '/', $new_prefix, $table);
$rename_query = "RENAME TABLE `$table` TO `$new_table`;";
echo "Renommage : $table -> $new_table\n <br />";
$mysqli->query($rename_query);
}

// 3. Mettre à jour les options contenant des clés avec préfixe
$mysqli->query("UPDATE {$new_prefix}options SET option_name = REPLACE(option_name, '{$old_prefix}', '{$new_prefix}') WHERE option_name LIKE '{$old_prefix}%'");

// 4. Mettre à jour les métas utilisateurs
$mysqli->query("UPDATE {$new_prefix}usermeta SET meta_key = REPLACE(meta_key, '{$old_prefix}', '{$new_prefix}') WHERE meta_key LIKE '{$old_prefix}%'");

// 5. Modifier wp-config.php (manuel ou automatique)
echo "\n N'oublie pas de mettre à jour cette ligne dans wp-config.php :\n <br />";
echo "\$table_prefix = '{$new_prefix}';\n <br />";

$mysqli->close();

echo "\n Préfixe changé avec succès. Supprime ce script pour des raisons de sécurité.\n";

  • Exécutez le script en renseignant l’URL du fichier dans votre navigateur :
    https://votre-site.com/script-db.php
    Une fois le script exécuté, supprimez-le.
  • Dernière étape importante : éditez le fichier wp-config.php qui se trouve à la racine de votre site et modifiez la variable
    $table_prefix = 'wp_';
    en
    $table_prefix = 'secure123_';
    (à remplace par votre préfixe bien sûr…)

Vous pouvez maintenant passer à des tâches plus créatives et moins techniques…

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *