Il arrive de devoir changer le mot de passe d’un utilisateur WordPress sans passer par l’administration : accès perdu, email de réinitialisation qui ne part pas, compte administrateur bloqué, migration cassée, ou site en maintenance.
La méthode moderne consiste à utiliser WP-CLI. La méthode SQL reste possible, mais uniquement comme solution de secours. Modifier directement la base fonctionne, mais il faut le faire proprement, car WordPress ne stocke pas les mots de passe en clair.
Voici les méthodes fiables pour changer le mot de passe d’un utilisateur WordPress depuis le serveur ou depuis MySQL.
Méthode recommandée : changer le mot de passe avec WP-CLI
Si vous avez un accès SSH au serveur et que WP-CLI fonctionne, utilisez cette méthode. Elle est plus sûre, plus propre, et laisse WordPress gérer le hash du mot de passe.
Commencez par lister les utilisateurs :
wp user listLangage du code : PHP (php)
Vous pouvez afficher uniquement les champs utiles :
wp user list --fields=ID,user_login,user_email,rolesLangage du code : PHP (php)
Changez ensuite le mot de passe avec l’ID, le login ou l’adresse email de l’utilisateur :
wp user update 1 --user_pass='NouveauMotDePasseFort'Langage du code : JavaScript (javascript)
Ou avec le login :
wp user update matt --user_pass='NouveauMotDePasseFort'Langage du code : JavaScript (javascript)
Ou avec l’email :
wp user update admin@example.com --user_pass='NouveauMotDePasseFort'Langage du code : CSS (css)
WP-CLI passe le mot de passe à WordPress, et WordPress l’enregistre correctement dans la table des utilisateurs. Pas besoin de générer le hash à la main. C’est justement tout l’intérêt.
Éviter d’exposer le mot de passe dans l’historique shell
Quand vous tapez un mot de passe directement dans une commande, il peut rester dans l’historique du shell. Sur un serveur personnel, le risque est limité. Sur un serveur client ou partagé, c’est plus sale.
Une approche plus propre consiste à demander à WP-CLI de vous prompter la valeur :
wp user update 1 --prompt=user_pass
WP-CLI demandera la valeur du mot de passe au moment de l’exécution. C’est plus discret que de l’écrire dans la ligne de commande.
Vous pouvez aussi générer un mot de passe fort avec OpenSSL :
openssl rand -base64 24
Puis l’utiliser immédiatement, idéalement via le prompt WP-CLI.
Changer le mot de passe dans un chemin WordPress précis
Si vous n’êtes pas dans le dossier du site WordPress, indiquez le chemin avec --path :
wp --path=/home/example/public_html user update 1 --prompt=user_passLangage du code : JavaScript (javascript)
Cette syntaxe est utile sur un serveur qui héberge plusieurs sites WordPress.
Pour d’autres commandes d’administration WordPress côté serveur, vous pouvez aussi consulter le guide sur la liste des articles publiés avec WP-CLI.
Changer un mot de passe WordPress en multisite
Sur WordPress multisite, l’utilisateur appartient au réseau. Vous pouvez cibler le site avec --url, surtout si WP-CLI doit charger le bon contexte.
wp --url=https://example.com user list --fields=ID,user_login,user_email,rolesLangage du code : JavaScript (javascript)
Puis :
wp --url=https://example.com user update 1 --prompt=user_passLangage du code : JavaScript (javascript)
Si vous devez vérifier les super-admins du réseau :
wp super-admin listLangage du code : JavaScript (javascript)
Changer le mot de passe d’un utilisateur réseau affecte son compte global. Ne le faites pas à l’aveugle sur un multisite client : le même utilisateur peut accéder à plusieurs sites.
Méthode SQL : uniquement en dernier recours
La méthode SQL sert quand WP-CLI n’est pas disponible ou quand WordPress ne charge plus correctement. Elle consiste à modifier la colonne user_pass dans la table des utilisateurs.
Avant toute modification, sauvegardez la base :
wp db export "backup-before-password-reset-$(date +%F-%H%M%S).sql"Langage du code : JavaScript (javascript)
Si WP-CLI est indisponible, faites une sauvegarde avec mysqldump depuis les identifiants de wp-config.php.
Trouver le préfixe des tables WordPress
La table des utilisateurs s’appelle souvent wp_users, mais le préfixe peut être différent : wp_, abc_, skyminds_, etc.
Avec WP-CLI :
wp db prefix
Depuis MySQL, vous pouvez lister les tables utilisateurs :
SHOW TABLES LIKE '%\_users';Langage du code : JavaScript (javascript)
Repérez ensuite la bonne table, par exemple :
wp_users
Lister les utilisateurs depuis MySQL
Dans MySQL ou phpMyAdmin, commencez par identifier le compte concerné :
SELECT ID, user_login, user_email, user_registered
FROM wp_users
ORDER BY ID ASC;
Pour chercher un compte précis :
SELECT ID, user_login, user_email
FROM wp_users
WHERE user_login = 'admin';Langage du code : JavaScript (javascript)
Ou par email :
SELECT ID, user_login, user_email
FROM wp_users
WHERE user_email = 'admin@example.com';Langage du code : JavaScript (javascript)
Ne modifiez pas un compte si vous n’êtes pas certain de son ID. Sur les vieux sites, le compte administrateur n’a pas toujours l’ID 1.
Changer le mot de passe avec MD5 dans SQL
La méthode SQL de secours consiste à écrire un hash MD5 temporaire dans user_pass :
UPDATE wp_users
SET user_pass = MD5('NouveauMotDePasseFort')
WHERE ID = 1;Langage du code : JavaScript (javascript)
Remplacez wp_users par le vrai nom de votre table, et 1 par l’ID correct de l’utilisateur.
Cette méthode fonctionne parce que WordPress sait encore reconnaître un ancien hash MD5. Lors de la connexion suivante, WordPress pourra remplacer ce hash par son format de hash actuel. Mais ce n’est pas une raison pour utiliser MD5 comme méthode normale.
Connectez-vous ensuite immédiatement avec ce nouveau mot de passe, puis changez-le depuis le profil utilisateur ou avec WP-CLI afin de forcer un stockage propre.
Méthode SQL avec hash WordPress généré en PHP
Si WordPress peut charger mais que vous voulez quand même travailler depuis le serveur, vous pouvez générer un hash WordPress avec wp_hash_password().
Exemple avec WP-CLI :
wp eval 'echo wp_hash_password( "NouveauMotDePasseFort" );'Langage du code : JavaScript (javascript)
Cette commande retourne un hash que vous pouvez injecter dans SQL si nécessaire. Mais, honnêtement, si WP-CLI fonctionne assez pour exécuter wp eval, utilisez directement :
wp user update 1 --prompt=user_pass
C’est plus simple et moins risqué. Parfois, la meilleure commande est celle qui évite d’en écrire trois.
Changer le mot de passe avec phpMyAdmin
Si vous n’avez pas accès au terminal, phpMyAdmin peut dépanner.
- ouvrez phpMyAdmin ;
- sélectionnez la base WordPress ;
- ouvrez la table
wp_users, ou son équivalent avec votre préfixe ; - trouvez l’utilisateur concerné ;
- éditez la ligne ;
- dans
user_pass, saisissez le nouveau mot de passe ; - choisissez la fonction
MD5; - enregistrez ;
- connectez-vous immédiatement ;
- changez ensuite le mot de passe depuis WordPress.
Cette méthode est pratique en urgence, mais elle reste inférieure à WP-CLI. Elle demande une manipulation manuelle en base, donc plus de risque d’erreur.
Forcer la déconnexion des sessions existantes
Changer le mot de passe ne suffit pas toujours à invalider proprement toutes les sessions dans tous les contextes. Après une récupération de compte ou un doute de sécurité, forcez la déconnexion des sessions existantes.
Avec WP-CLI, vous pouvez modifier les clés de sécurité WordPress :
wp config shuffle-salts
Cette commande renouvelle les clés et salts de wp-config.php, ce qui invalide les cookies d’authentification existants. Tous les utilisateurs devront se reconnecter.
Sur un site client ou WooCommerce actif, prévenez avant de le faire. C’est efficace, mais ça déconnecte tout le monde. Le coup de balai est propre, mais bruyant.
Vérifier que l’utilisateur est administrateur
Changer le mot de passe ne suffit pas si le compte n’a pas les bons droits. Pour vérifier les rôles avec WP-CLI :
wp user get 1 --fields=ID,user_login,user_email,rolesLangage du code : JavaScript (javascript)
Pour ajouter le rôle administrateur à un compte, si vous êtes certain de ce que vous faites :
wp user set-role 1 administratorLangage du code : JavaScript (javascript)
Sur multisite, le rôle administrateur d’un sous-site n’est pas la même chose qu’un super-admin réseau. Vérifiez le contexte avant de modifier les droits.
Créer un nouvel administrateur si le compte est trop abîmé
Si le compte existant est corrompu, introuvable ou mal configuré, créez un nouvel administrateur avec WP-CLI :
wp user create emergency-admin admin@example.com --role=administrator --prompt=user_passLangage du code : CSS (css)
Connectez-vous ensuite avec ce compte, corrigez le compte original, puis supprimez le compte temporaire si vous n’en avez plus besoin.
Vous pouvez lister les administrateurs actuels avec :
wp user list --role=administrator --fields=ID,user_login,user_emailLangage du code : PHP (php)
Cas WooCommerce : attention aux comptes clients
Sur WooCommerce, un utilisateur peut être à la fois client, abonné, ancien acheteur, ou avoir des rôles personnalisés. Avant de changer un mot de passe, vérifiez que vous ciblez le bon compte.
Listez les comptes clients :
wp user list --role=customer --fields=ID,user_login,user_email,display_nameLangage du code : PHP (php)
Si vous intervenez sur une boutique en production, évitez de réinitialiser le mot de passe d’un client sans procédure claire. Préférez l’email de réinitialisation standard quand c’est possible.
Pour les opérations WooCommerce côté serveur, vous pouvez aussi consulter le guide sur la mise à jour de la base WooCommerce avec WP-CLI.
Que faire après une récupération d’accès ?
Une fois connecté, ne vous arrêtez pas au simple changement de mot de passe. Faites un contrôle rapide.
- Vérifiez les utilisateurs administrateurs.
- Supprimez les comptes suspects.
- Vérifiez les emails des administrateurs.
- Changez les mots de passe FTP/SFTP/SSH si besoin.
- Vérifiez les clés de sécurité WordPress.
- Contrôlez les plugins installés.
- Vérifiez les mu-plugins.
- Vérifiez les fichiers récemment modifiés.
- Contrôlez les tâches cron suspectes.
Si votre accès a été perdu après une mise à jour, regardez aussi les logs PHP et les erreurs fatales. Si le site demande des identifiants FTP pendant les mises à jour, l’article sur l’erreur ftp_nlist() expects parameter 1 to be resource peut aider à corriger l’environnement.
Checklist rapide
- Utiliser WP-CLI si possible.
- Lister les utilisateurs avec
wp user list. - Changer le mot de passe avec
wp user update. - Utiliser
--prompt=user_passpour éviter l’historique shell. - Sauvegarder la base avant toute manipulation SQL.
- Identifier le bon préfixe de table.
- Modifier
user_passuniquement en dernier recours. - Se reconnecter immédiatement après une modification SQL.
- Changer ensuite le mot de passe via WordPress ou WP-CLI.
- Vérifier les rôles du compte.
- Forcer la déconnexion des sessions si nécessaire.
- Supprimer les comptes temporaires après récupération.
Commandes utiles
Lister les utilisateurs :
wp user list --fields=ID,user_login,user_email,rolesLangage du code : PHP (php)
Changer un mot de passe proprement :
wp user update 1 --prompt=user_pass
Changer un mot de passe avec un chemin précis :
wp --path=/home/example/public_html user update 1 --prompt=user_passLangage du code : JavaScript (javascript)
Créer un administrateur temporaire :
wp user create emergency-admin admin@example.com --role=administrator --prompt=user_passLangage du code : CSS (css)
Vérifier le rôle d’un utilisateur :
wp user get 1 --fields=ID,user_login,user_email,rolesLangage du code : JavaScript (javascript)
Forcer la déconnexion générale :
wp config shuffle-salts
Requête SQL de secours :
UPDATE wp_users
SET user_pass = MD5('NouveauMotDePasseFort')
WHERE ID = 1;Langage du code : JavaScript (javascript)
Conclusion
Pour changer le mot de passe d’un utilisateur WordPress depuis le serveur, utilisez WP-CLI dès que possible :
wp user update 1 --prompt=user_pass
Cette méthode laisse WordPress hasher correctement le mot de passe et évite les manipulations directes en base.
La méthode SQL avec MD5() reste une solution de secours si WordPress ou WP-CLI ne sont pas disponibles. Elle peut dépanner vite, mais elle doit être suivie d’une connexion immédiate et d’un changement propre du mot de passe.
En clair : WP-CLI pour le quotidien, SQL pour l’urgence. Le premier travaille avec WordPress. Le second force la serrure. Parfois utile, rarement élégant.


