Créer ou récupérer un accès administrateur à WordPress avec MySql
C’est un problème assez courant sur les forums d’entraide WordPress : l’administrateur d’un site n’arrive plus à y accéder soit parce qu’il a oublié son mot de passe, soit parce que son site a été piraté, ou suite à une erreur technique. Si le site ne fonctionne plus, il n’y a pas moyen de récupérer le mot de passe d’administration par e-mail, et parfois on n’a plus accès à l’adresse e-mail indiquée lors de la création du site. Pour moi qui interviens régulièrement sur les sites WordPress de tiers, la technique décrite ici est une façon rapide de prendre la main sur l’interface d’administration quand mon client m’a donné l’accès à son serveur. Car il est très simple de se recréer un accès administrateur pour WordPress du moment qu’on a accès aux données dans la base MySql.
Récupérer l’accès à la base
Il y a deux façons courantes d’accéder aux données de la base MySql qui sous-tend un site WordPress hébergé sous LAMP :
- L’accès en ligne de commande via le client mysql
- L’accès via l’interface web phpmyadmin
Dans les deux cas, il faut d’abord localiser la base de données du site WordPress, c’est à dire vérifier où elle est hébergée physiquement, connaître son nom et le compte d’utilisateur qui permet d’y accéder. Toutes ces informations figurent en clair dans le fichier de configuration de WordPress qui est un simple fichier PHP éditable avec un éditeur de texte standard.
Le fichier wp-config.php
Comme un même serveur peut héberger plusieurs sites sous WordPress, il faut localiser le répertoire qui contient l’installation qui nous concerne (sur un serveur GNU Linux Debian, on trouve généralement ces répertoires dans /var/www … sur d’autres configurations GNU / Linux, le site sera peut-être hébergé dans un sous-répertoire de /home ). Une fois le “bon” répertoire trouvé, le fichier de configuration de WordPress est wp-config.php que l’on peut éditer en ligne de commande (avec vi ou more), ou encore rapatrier par FTP pour examiner son contenu.
Les lignes qui nous intéressent sont les suivantes :
// ** Réglages MySQL - Votre hébergeur doit vous fournir ces informations. **
//
/** Le nom de la base de données de WordPress. */
define('DB_NAME', '<nom_bd>');
/** Utilisateur de la base de données MySQL. */
define('DB_USER', '<nom_util>');
/** Mot de passe de la base de données MySQL. */
define('DB_PASSWORD', '<mot_de_passe>');
/** Adresse de l'hébergement MySQL. */
define('DB_HOST', '<serveur>');
[...]
$table_prefix = '<wp_>';
Les cinq informations à noter sont celles que j’ai remplacé par du texte <entre crochets>.
Nous allons en avoir besoin pour nous connecter à la base de WordPress.
Deux cas de figure se présentent pour l’emplacement physique de la base :
- Soit elle se trouve sur le même serveur
- Soit elle est sur un serveur distant
Si elle est sur le même serveur, nous pouvons poursuivre en ligne de commande en nous connectant en MySql. Si elle est sur un serveur séparé, il faut soit accéder à ce serveur également en ligne de commande, soit mettre en oeuvre un accès par un autre système (souvent phpMyAdmin, qui s’utilise dans un navigateur web à partir de l’adresse communiquée par votre hébergeur).
Se connecter à la base
Voici comment se connecter à la base en ligne de commande en utilisant les informations collectées dans le fichier wp-config.php :
mysql -u <nom_util> -p <nom_bd>
(remplacer les expressions entre crochet par les informations trouvées dans wp-config.php). Vous devrez fournir le mot de passe également trouvé dans wp-config.php.
Sélectionner la bonne table
Nous recherchons maintenant la table dans laquelle WordPress stocke les informations sur ses utilisateurs. Par défaut il s’agit de la table wp_users. Cependant, si vous avez indiqué un autre préfixe que le préfixe “wp_” proposé par défaut dans votre fichier de configuration (par exemple si vous avez plusieurs installations de WordPress utilisant la même base de données), il faut chercher la table <wp_>users.
Si vous ne trouvez pas la table correspondantte ou n’êtes pas sur, vous pouvez demander à mysql de lister toutes les tables existantes avec la commande SHOW TABLES;
(tapez vos commandes sur la ligne de commande MySql en les terminant systématiquement par un point-virgule et la touche “entrée”)
Repérez la table qui a le préfixe correspondant à votre installation de WordPress et le suffixe _users.
Ajouter un utilisateur au site
Pour la suite de cette explication, nous considérerons que votre table d’utilisateurs est wp_users (cas le plus courant).
Afin d’ajouter un utilisateur au site, nous allons entrer une nouvelle ligne dans la table wp_users, en mentionnant un identifiant utilisateur et un mot de passe. Choisissez un identifiant d’utilisateur qui n’est pas en usage sur votre site (par exemple admin_provisoire). Nous allons devoir lui générer un mot de passe crypté selon le format MD5.
Pour cela, vous pouvez utiliser un des nombreux services en ligne de calcul de clé MD5, par exemple celui-ci.
L’ajout de l’utilisateur se fait avec cette commande mysql :
INSERT INTO wp_users ( user_login, user_pass ) VALUES ( '<identifiant>', '<mot_de_passe_crypté_md5>' );
A noter qu’il ne faut surtout pas mettre le mot de passe “en clair”, mais bien la chaîne de 32 caractères de la clé MD5 de ce mot de passe.
Nous devons récupérer l’identifiant interne que MySql a attribué à ce nouvel enregistrement :
SELECT LAST_INSERT_ID();
(si cette fonction retourne zéro, faites une recherche avec SELECT id FROM wp_users WHERE user_login=’<identifiant>‘; )
Pour la suite de l’explication, nous appellerons cet identifiant numérique <id>.
Transformer le nouvel utilisateur en administrateur
Si vous essayez maintenant de vous connecter à WordPress avec l’identifiant que nous venons d’ajouter dans la base des utilisateurs, vous constaterez en général que vous êtes connecté comme simple utilisateur du site, ou que vous obtenez une erreur du type “Vous n’avez pas les droits suffisants pour accéder à cette page”.
C’est normal, car pour reprendre la main sur votre site via ce compte d’administrateur, nous devons maintenant lui attribuer les privilèges appropriés.
Voici la ligne de commande, toujours sous mysql :
INSERT INTO wp_usermeta ( user_id, meta_key, meta_value ) VALUES ( <id>, 'wp_capabilities', 'a:1:{s:13:"administrator";b:1;}' );
Le tour est joué ! Nous venons d’ajouter une valeur sérialisée dans la table usermeta qui stocke les données associées aux utilisateurs WordPress (et notamment les privilèges d’administration). Ici également si votre préfixe de table est différent de wp_, vous devrez ajuster la commande pour insérer la valeur dans la bonne table.
Vous pouvez maintenant vous connecter à l’administration de votre site WordPress :
http://adresse.de.votre.site/wp-admin
Utilisez l’identitifant et le mot de passe nouvellement créés ci-dessus, allez modifier l’adresse e-mail et le mot de passe de votre compte d’administration habituel, puis vous pouvez supprimer le compte d’administration provisoire.




le 27 July 2011 à 23:34 h
Bonsoir,
Votre article me concerne justement, je suis sous WordPress via OVH.
Apres avoir essayé de mettre mon site en ligne, pour l’instant je bloque, j’ai bidoullé l’URL dans les réglages géneraux de WordPress.
Mais maintenant je trouve ce message quand j’essaye de me connecter “The requested URL /wp-login.php was not found on this server.” à l’administration.
j’ai bien lu votre article, mais je ne trouve pas le fichier wp-confid.php dans mon FTP.
Si vous avez une solution je suis preneur
Par avance merci
le 28 July 2011 à 0:26 h
@Paul:
L’erreur “The requested URL /wp-login.php was not found on this server” n’est pas liée à un problème de mot de passe perdu, donc ce n’est pas l’objet de mon article. Si vous avez cette erreur c’est soit qu’il manque des fichiers à votre installation WordPress, soit que votre installation n’a pas été faite au “bon endroit”, soit encore que la configuration de votre serveur web ne correspond pas à ce dont vous avez besoin pour faire fonctionner votre WordPress. Si c’est une nouvelle installation, vous devriez sans doute la reprendre à zéro.
le 11 January 2012 à 20:17 h
Merci pour cet article, Je viens de passé une journée sur les forum, c ‘est enfin toi qui m ‘a sauvé. Que Dieu te bénisse!
le 20 January 2012 à 15:22 h
Bonjour,
Novices en dév. web, nous souhaitons faire nous-même notre site “entreprise” via WordPress. Nous avons installé Wp, cependant, les fichiers placés dans le dossier www de Filezilla devaient être incomplets (pages créées sur notre site wp invisibles) Et hier, l’erreur “The requested URL /wp-login.php was not found on this server” est apparue et notre accès est devenu “Forbidden”. Nous avons trouvé votre réponse à ce commentaire intéressant mais ne savons pas comment reprendre tout à zéro. Différents tuto sont assez clairs, mais jamais identiques à notre config (on est sur Mac, codes MySQL de l’hébergeur, Mamp et Filezilla !) Pouvez nous nous mettre sur la voie afin que l’on puisse reprendre le contrôle de notre wp-admin ? En vous remerciant vivement par avance de votre aide, Bien cordialement
le 26 January 2012 à 16:17 h
Salut,
Merci pour ce tuto!
Pour moi, tout se passe bien jusqu’à la dernière étape. L’insertion de la ligne
INSERT INTO wp_usermeta ( user_id, meta_key, meta_value ) VALUES ( , ‘wp_capabilities’, ‘a:1:{s:13:”administrator”;b:1;}’ );
ne change rien… Je n’arrive pas à me connecter en tant qu’administrateur.
Une idée d’où cela pourrait provenir ?
Merci !
le 26 January 2012 à 16:41 h
OK, j’ai trouvé d’où venait le problème !
Je n’avais pas modifié wp_capabilities pour le bon préfixe de table.
En fait, c’est ce tuto qui m’a permis de comprendre l’erreur : http://www.wpbeginner.com/wp-tutorials/how-to-add-an-admin-user-to-the-wordpress-database-via-mysql/
Mais encore merci pour cet article, c’est top !
le 27 January 2012 à 12:18 h
@aurélie. S’il manque des fichiers, il faut commencer par remettre l’intégralité des fichiers de WordPress en place. Le fait d’écraser les fichiers existants n’endommagera pas vos données (contenus du blog), vous pouvez donc le faire sans danger.
le 13 February 2012 à 14:36 h
Bonjour,
C’est en cherchant à résoudre un problème d’accès au tableau de bord d’un blog élaboré avec WordPress que je suis arrivé sur ce tuto que je trouve très bien fait.
Je n’ai pas perdu le MdP ni le login.
Mon souci est le suivant. Je peux accéder à la page d’accueil du site, aller dans les catégories pour y lire des articles, rédiger un formulaire de contact ou d’inscription, bref, pour un visiteur, tout va bien.
Le hic, est lorsque je veux me connecter en administrateur en tapant /wp-admin à la suite de l’URL j’obtiens le message suivant :
Warning: Cannot modify header information – headers already sent by (output started at /homepages/14/d400165205/htdocs/wp-content/themes/Dravis/functions.php:1) in /homepages/14/d400165205/htdocs/wp-includes/pluggable.php on line 866
Auriez-vous une solution ?
J’ai tenté de changer le code des droits d’accès aux fichiers header, functions du thème et pluggable indiqués sur le message d’erreur de 644 à 777, mais rien à faire.
Vous remerciant par avance de votre aide.
Bonne réception.
le 16 February 2012 à 18:40 h
@Gilles :
supprimez la ligne vide tout en haut de votre fichier functions.php (/wp-content/themes/Dravis/functions.php)
Si vous avez des lignes blanches (sauts de ligne) dans vos fichiers PHP, cela perturbe le fonctionnement des plugins qui ont besoin d’envoyer des cookies. Faites la chasse aux lignes vides en haut et en base des scripts, et de façon générale avant <?php et après ?>
Ceci n’est pas un problème spécifique à WordPress.
le 21 February 2012 à 15:47 h
Bonjour,
Désolé de cette réponse tardive, mais entre temps la carte mère de mon PC a lâché, donc le temps que je la trouve et que je la change…
Merci de votre réponse que je mets en application, car même souci avec un autre thème et ça marche maintenant.
J’ai une autre question concernant le slide.
Sur la page d’accueil j’ai un slide où je peux choisir le nombre d’articles slidés (de 1 à 20) et la catégorie (une seule à la fois). Mon problème est que pour 2 catégories rien ne s’affiche, le pavé reste de la couleur que je lui ai attribuée, alors que les autres fonctionnent bien.
Pourriez-vous m’orienter, me dire vers quels fichiers aller “fouiller” ou …? Je suis un peu perdu pour ce clash là !
Si vous souhaiter voir le site concerné : http://www.allaiter-en-sarthe.fr (je le réalise pour ma fille).
Vous remerciant par avance,