Changer la racine de ses tables une fois WordPress installé
Dans un précédent article, Mettre en place une protection minimale, nous avions vu qu’il était important de modifier le préfixe des tables. Cette opération se réalise généralement lors de l’installation de WordPress, mais comment faire si vous êtes amener à travailler sur un site qui est déjà installé et dont les tables usent du pré-fixage par défaut, à savoir wp_? Nous allons voir au cours de cet article que moyennant quelques requêtes SQL cela est chose facile.
Donc avant toute chose et avant d’aller plus loin, faites une sauvegarde de la base de données (structure et datas au format SQL) afin de parer à toutes éventualités de mauvaises manipulations qui seraient irréversibles et placez votre site en mode maintenance.
Renommer toutes les tables de la base
Du fait que la base de données est déjà crée, il va falloir changer le nom des tables employées de manière manuelle. Le plus simple est d’user soit de l’outil de gestion fourni par votre hébergeur, soit s’il est installé de PHPMyAdmin. Quoiqu’il en soit connectez vous sur votre base de données en ligne. En fonction de l’outil que vous utilisez il est possible de sélectionner toutes les tables et de choisir Remplacer le préfixe de la table depuis le menu d’action pour la sélection. Il suffit alors de renseigner Depuis wp_ et Vers nouveauprefixe_. Si vous n’avez pas accès à cette fonctionnalité, il va falloir saisir autant de requête SQL qu’il y a de tables et les exécuter:
ALTER TABLE `wp_commentmeta` RENAME `nouveauprefixe_commentmeta` ; ALTER TABLE `wp_comments` RENAME `nouveauprefixe_comments` ; ALTER TABLE `wp_links` RENAME `nouveauprefixe_links` ; ALTER TABLE `wp_options` RENAME `nouveauprefixe_options` ; ALTER TABLE `wp_postmeta` RENAME `nouveauprefixe_postmeta` ; ALTER TABLE `wp_posts` RENAME `nouveauprefixe_posts` ; ALTER TABLE `wp_terms` RENAME `nouveauprefixe_terms` ; ALTER TABLE `wp_term_relationships` RENAME `nouveauprefixe_term_relationships` ; ALTER TABLE `wp_term_taxonomy` RENAME `nouveauprefixe_term_taxonomy` ; ALTER TABLE `wp_usermeta` RENAME `nouveauprefixe_usermeta` ; ALTER TABLE `wp_users` RENAME `nouveauprefixe_users` ;
Affiner la table wp_options, ou plutôt nouveauprefixe_options
Cette table renferme une option qui se base sur le préfixe utilisé, cette information se trouve dans le champ option_name. Donc il suffit de rechercher l’enregistrement correspondant et de modifier la valeur. Le plus simple est d’avoir recours une fois encore soit à l’outil de gestion et de le faire manuellement, soit d’user d’une requête SQL:
UPDATE `nouveauprefixe_options` SET `option_name` = 'nouveauprefixe_user_roles' WHERE `option_name` ='wp_user_roles';
Affiner également la table nouveauprefixe_usermeta
Cette table renferme également des valeurs basées sur le préfixage dans le champ meta_key. Il va nous falloir également mettre à jour tous ces enregistrements. Première étape les localiser afin de les vérifiers. Une requête SQL fera bien l’affaire:
SELECT * FROM `nouveauprefixe_usermeta` WHERE `meta_key` LIKE '%wp_%'
Bon on a vérifier que tous ces enregistrements devaient être modifiés… alors modifions les… une fois encore, le plus simple reste un bonne vieille requête SQL
update `nouveauprefixe_usermeta` set `meta_key` = replace(`meta_key`, 'wp_', 'nouveauprefixe_') where `meta_key` LIKE '%wp_%'
Enfin, il ne faut pas oublier le fichier wp_config.php
Il ne reste plus qu’à modifier le fichier de configuration en indiquant le préfixe de tables employé. Enregistrez le et placez le en ligne et votre site devrait fonctionner normalement mais en étant protégé contre des attaques concernant le pré-fixage par défaut. Si cela fonctionne correctement, vous pouvez alors désactiver le mode maintenance, sinon réimporter la base de sauvegarde et recommencer les diverses opérations en faisant attention à ne pas faire d’erreurs.
$table_prefix = 'nouveauprefixe_';
2 réponses
[…] Utiliser un pré-fixage de tables autre que wp_, par exemple wp_client_ref_ ou tout autre combinaison, si WordPress est déjà installé, rapprochez vous de l’article Changer la racine de ses tables une fois WordPress installé […]
[…] Coté wp-config.php, pas besoin de mettre en place une racine de table dédiée, le wp_ par défaut est parfait, il n’est également pas nécessaire d’utiliser un sel de protection, là encore nous sommes en local et une surprotection n’est pas de rigueur. Par contre cela permettra de changer la racine des tables une fois WordPress installé, et de donc justifier l’article adhoc, Changer la racine de ses tables une fois WordPress installé. […]