cadenas-paris-pont

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 050

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 !

27 commentaires

  1. Sympa je vais réfléchir et en trouver une autre >___< je peux le faire ! haha
    Par contre petite modif du script:
    require('./wp-blog-header.php');
    devient
    define( 'SHORTINIT', true );
    require( 'wp-load.php' );
    Puisque le script n'utilise pas les plugins et template, pourquoi tout charger ?
    On ne requiert le "blog header" que quand on a besoin du blog header :|
    Et on utilise "SHORTINIT" quand on souhaite juste pouvoir utiliser la BDD et fonctions WP pour un script maison.

    Saviez vous que vous pouvez utiliser WP de cette façon et ainsi développer une application tiers ?

    Merci !

  2. salut,

    puisque je vois qu’un concours est lancé pour une 4ème technique je propose la backdoor de Brad Williams :
    http://www.strangework.com/2009/12/29/how-to-create-backdoor-admin-access-in-wordpress/

    elle ne permet pas directement de réinitialiser le mdp mais de créer un autre admin qui pourra le changer depuis le backoffice… et, un peu comme la technique de l’emergency.php, il est recommandé de supprimer le tout une fois l’opération terminée !

    seb

      1. de rien

        et je viens juste d’en trouver une autre ! il suffit de mettre dans le fichier functions.php la ligne suivante :
        wp_set_password( ‘NouveauMotDePasse’, 1 );
        1 étant l’id de l’utilisateur dont on veux réinitialiser le mot de passe. l’id 1 correspond au compte admin créé par WordPress lors de l’installation. il suffit alors de visiter une des pages du site pour que le mot de passe soit remis à jour, puis de supprimer cette ligne du fichier functions.php

        voir ici :
        http://codex.wordpress.org/Function_Reference/wp_set_password

        seb

  3. bonjour ,j’avais ouvert un blog wordpress ,il y a quelques temps ,puis un jour ,soit-y sans que mon mot de passe n’était pas bon ,alors que je ne l’avais pas changé , »mystère « ,donc plus accès a mon blog ,j’ai laissé tomber ,car entre deux problèmes familiaux ,et il y a 2 jours ,j’ai remarqué ,qu’il ,n’était pas vraiment fermer.mais voilà ,je ne sais pas du tout comment faire ,j’ai réussi a changer l’avatar ,mais je sais pas comment y avoir accès.même en changeant le mot de passe ,puis -je refaire mon inscription ,mais avec de nouvelles bases et comment faire .une mamie qui demande de l’aide ci possible merci.j’ai télécharger wordpress3-3-1 -fr et wordpress-reset1.3.2 ,sans savoir quoi en faire

    1. Hum ce n’est pas simple de diagnostiquer votre problème et donc de vous aider.

      Je pense que vous devriez vous faire aider par un développeur Web ou suivre une formation WordPress (en livre pour commencer) car j’ai l’impression que vous êtes un peu perdu…

      Courage !

  4. Merci merci merci ! Site wordpress pour une association dont le président a disparu de la surface emportant avec lui le mot de passe , 15 min de désespoir, 10sec de recherche sur google. MERCI !!!

  5. bonjour,
    juste une précision dans la solution 2, où il est écrit nouveaumdp, on met le nouveau mot de passe et non nouveaumdp ?
    merci

  6. Bonjour,

    J’avais essayé cette solution une fois et ça avait marché. Mais ça ne semble plus marcher désormais. Savez vous pourquoi?
    Le changement du mot de passe dans la base en MD5 devrait suffire pourtant déjà …

    Merci.

  7. Bonjour, j’ai eu un problème lors de la manipulation en passant par phpmyadmin j’ai bien modifié wp-users en mettant un mot de passe j’ai exécuté ensuite je me suis connecté à l’administration et le nouveau mot de passe ne fonctionne pas de même pour l’ancien mot de passe. J’ai pourtant fait comme vous dans le tuto en sélectionnant MD5 .

    J’ai réussi à le changer en passant par la page administration en cliquant sur » mot de passe oublié »

    Si vous avez une réponse à cela.

    Merci.

    Laisser un commentaire