3 techniques pour réinitialiser votre mot de passe WordPress

En cas de perte de mot de passe, WordPress dispose d’une fonction de renvoi par mail. Mais comment faire lorsque vous n’avez plus accès à votre boite mail et que toutes les possibilités de récupération sont épuisées ? Intervenir dans la base de données MySQL !

#1 – Réinitialisation du mot de passe WordPress via phpMyAdmin

Connectez-vous dans un premier temps à phpMyAdmin via le lien fourni par votre hébergeur (panneau de contrôle cPanel, Plesk ou autre).

Passez en mode structure puis modifier la table wp_users.

Localisez le compte dont vous souhaitez changer le mot de passe à l’aide de la colonne user_login. Faites Modifier.

Capture d'écran - Modification de la base
Modification de wp_users

Notez qu’il vous sera impossible de connaître le mot de passe actuellement en place.

A la ligne user_pass, inscrivez votre nouveau de mot de passe puis sélectionnez MD5 dans la liste déroulante.

Capture d'écran - Saisie d'un nouveau mot de passe
Mot de passe WordPress crypté

Validez en cliquant sur Exécuter.

Connectez-vous au back office de WordPress à l’aide du nouveau mot de passe.

#2 – Réinitialiser votre mot de passe WordPress via FTP

Il existe une commande PHP permettant de remettre à zéro un mot de passe WordPress à condition de connaître l’identifiant…. et son ID.

L’administrateur du site est toujours le premier compte ce qui facilite grandement les choses – avec un compte admin vous pourrez modifier n’importe quel autre compte utilisateur.

Ouvrez le fichier functions.php présent dans le dossier du thème sous /wp-content/themes/NOM_DU_THEME/ en effectuant une sauvegarde au préalable.

Placez ensuite les lignes de code suivantes en début de fichier :

<?php
$user_id = 1;
$password = 'nouveaumdp';
wp_set_password( $password, $user_id );
?>

Sauvegardez le fichier puis ouvrez la page de connexion. Avant de valider supprimez immédiatement ces lignes de code sans quoi le mot de passe sera réinitialisé à chaque chargement de page et donc à la connexion proprement dite.

Si vous oubliez de les retirer vous resterez bloqué sur la page de connexion tout simplement.

#3 – Réinitialiser votre mot de passe via un script PHP

Comme indiqué par l’auteur de ce script PHP, utilisez cette méthode à vos risques et périls !

Personnellement, je l’ai testé en local sur la version 3.3.1 de WordPress et… elle fonctionne parfaitement donc là voici en détails.

A l’aide de votre éditeur de texte favori, créer un fichier que vous nommerez emergency.php puis collez-y les lignes suivantes :

<?php
/*
	This program is free software; you can redistribute it and/or modify
    	it under the terms of the GNU General Public License as published by
    	the Free Software Foundation; either version 2 of the License, or
    	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
    	but WITHOUT ANY WARRANTY; without even the implied warranty of
    	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
    	along with this program; if not, write to the Free Software
    	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

require('./wp-blog-header.php');

function meh() {
global $wpdb;

		if (isset($_POST['update']))
		{
			$user_login = ( empty( $_POST['e-name'] ) ? '' : sanitize_user( $_POST['e-name'] ) );
			$user_pass  = ( empty( $_POST[ 'e-pass' ] ) ? '' : $_POST['e-pass'] );
			$answer = ( empty( $user_login ) ? '<div id="message"><p><strong>The user name field is empty.</strong></p></div>' : '' );
			$answer .= ( empty( $user_pass ) ? '<div id="message"><p><strong>The password field is empty.</strong></p></div>' : '' );
			if ( $user_login != $wpdb->get_var("SELECT user_login FROM $wpdb->users WHERE ID = '1' LIMIT 1") )
			{
				$answer .="<div id='message' class='updated fade'><p><strong>That is not the correct administrator username.</strong></p></div>";
			}
			if( empty( $answer ) )
			{
				$wpdb->query("UPDATE $wpdb->users SET user_pass = MD5('$user_pass'), user_activation_key = '' WHERE user_login = '$user_login'");
				$plaintext_pass = $user_pass;
				$message = __('Someone, hopefully you, has reset the Administrator password for your WordPress blog. Details follow:'). "\r\n";
				$message  .= sprintf(__('Username: %s'), $user_login) . "\r\n";
				$message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n";
				@wp_mail(get_option('admin_email'), sprintf(__('[%s] Your WordPress administrator password has been changed!'), get_option('blogname')), $message);
$answer="<div id='message' class='updated fade'><p><strong>Your password has been successfully changed</strong></p><p><strong>An e-mail with this information has been dispatched to the WordPress blog administrator</strong></p><p><strong>You should now delete this file off your server. DO NOT LEAVE IT UP FOR SOMEONE ELSE TO FIND!</strong></p></div>";
			}
		}

		return ( empty( $answer ) ? false : $answer );
	}

$answer = meh();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>WordPress Emergency PassWord Reset</title>
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
	<link rel="stylesheet" href="<?php bloginfo('wpurl'); ?>/wp-admin/wp-admin.css?version=<?php bloginfo('version'); ?>" type="text/css" />
</head>
<body>
<div>
  	<form method="post" action="">
<h2>WordPress Emergency PassWord Reset</h2>
<p><strong>Your use of this script is at your sole risk. All code is provided "as -is", without any warranty, whether express or implied, of its accuracy, completeness. Further, I shall not be liable for any damages you may sustain by using this script, whether direct, indirect, special, incidental or consequential.</strong></p>
<p>This script is intended to be used as <strong>a last resort</strong> by WordPress administrators that are unable to access the database.
Usage of this script requires that you know the Administrator's user name for the WordPress install. (For most installs, that is going to be "admin" without the quotes.)</p>
<?php
echo $answer;
?>
<p><input type="submit" name="update" value="Update Options" /></p>

<fieldset>
<legend>WordPress Administrator</legend>
<label><?php _e('Enter Username:') ?><br />
		<input type="text" name="e-name" id="e-name" value="<?php echo attribute_escape(stripslashes($_POST['e-name'])); ?>" size="20" tabindex="10" /></label>
</fieldset>
<fieldset>
<legend>Password</legend>
<label><?php _e('Enter New Password:') ?><br />
		<input type="text" name="e-pass" id="e-pass" value="<?php echo attribute_escape(stripslashes($_POST['e-pass'])); ?>" size="25" tabindex="20" /></label>
</fieldset>

	<p><input type="submit" name="update" value="Update Options" /></p>
  	</form>
	</div></body></html>

<pre>

Envoyez ce fichier à la racine de votre serveur – au même niveau que le célèbre fichier wp-config.php.

Ouvrez votre navigateur Internet puis lancez le script en indiquant http://monsite.com/emergency.php comme URL – prenez soin de remplacer le domaine par le votre.

Changez le mot de passe à l’aide du formulaire en spécifiant dans un premier temps l’identifiant administrateur.

Capture d'écran - Remise à zéro mot de passe WordPress
En cas d'urgence, appelez le script PHP !

Indiquez le nouveau mot de passe puis faites Update Options.

Supprimez immédiatement le script emergency.php présent sur votre serveur. Notez que vous recevrez le nouveau de mot de passe sur la boite mail du compte administrateur – ce qui peut poser un risque de sécurité si votre compte a été piraté.

Si vous le préférez, le fichier PHP est disponible en téléchargement direct :

WordPress Emergency PassWord Reset

Script PHP pour remettre à zéro son mot de passe WordPress.

Taille : 2, 6 KiB  •  Date : 25 janvier 2012 •  Hits : 1 375

Avec les 3 techniques de remise à zéro de mot de passe WordPress évoquées ici, vous devriez être en mesure de faire face à toutes les situations. Vous connaissez d’autres méthodes alternatives de réinitialisation ? Partagez-les !