web-dev-qa-db-fra.com

Comment (re) définir le mot de passe pour l'administrateur après la migration de la version 1.5?

J'ai migré un ancien site Joomla 1.5 vers une nouvelle version brillante de Joomla 3.3 à l'aide de l'outil SP UPGRADE .

Maintenant, je n'arrive pas à me connecter et j'ai peur que ce soit parce que tous les mots de passe utilisateur dans la base de données ressemblent à 'MD5': 'Salt', l'ancienne méthode de création de mots de passe.

Je comprends que le code le plus récent utilise un mot de passe basé. Toutes les méthodes décrites à propos du collage dans l'ancien mot de passe "secret" ne fonctionnent pas.

Comment réinitialiser un mot de passe dans Joomla 3.3?

7
tgunr

Voici une solution de contournement pour réinitialiser temporairement votre mot de passe pour votre compte.

  1. Connectez-vous à votre panneau d'hébergement et utilisez l'outil de base de données disponible (probablement PHPmyAdmin).

  2. Chargez la base de données appropriée, puis accédez à la table jos_users. (Le préfixe de la base de données peut être différent pour votre cas).

  3. Accédez à la vue de navigation de PHPmyAdmin pour obtenir la vue des enregistrements de l'utilisateur.
  4. Localisez votre compte et cliquez pour éditer, ou cliquez directement dans le champ 'mot de passe' (PHPmyAdmin en général, rend le champ éditable avec ceci).
  5. Dans le champ mot de passe, collez la valeur ci-dessous:

$ 2a $ 10 $ JszAMznv7U2Q4VETQdw7n.CX/HPekafC8sxa9.n0V2gp/t/.xvHYi

  1. N'appliquez aucune fonction spéciale pour enregistrer le champ et le mot de passe de votre compte sera défini sur admin. Enregistrez l'enregistrement.

Vous pouvez maintenant vous connecter avec votre compte, en utilisant comme mot de passe: admin.

Après la connexion, assurez-vous de définir votre mot de passe souhaité.

9
FFrewin

En plus de la réponse précise de FFrewin, voici deux manières de réinitialiser le mot de passe de l'administrateur.

Remarque
Rappelez-vous que la plupart de ces méthodes vont définir votre mot de passe à quelque chose de simple comme admin. Il est très important de définir un mot de passe plus fort par la suite. S'il y a des raisons de penser que le site a été piraté, vous voudrez peut-être supprimer les autres utilisateurs disposant d'un accès administrateur une fois que vous aurez récupéré l'accès à votre installation Joomla.
Ces méthodes proviennent en partie de Joomla Docs .

Alternative 1: fichier Configuration.php

Si vous pouvez vous connecter avec un autre utilisateur (sans les droits de super-administrateur), il est possible d’ajouter cette ligne au bas du fichier configuration.php De votre répertoire racine Joomla:

public $root_user='myname';

Remplacez myname par le nom d'utilisateur de tout utilisateur dont vous connaissez le mot de passe (avec les droits d'auteur ou plus). Cet utilisateur pourra désormais se connecter en tant que super administrateur et vous pourrez éditer/ajouter des utilisateurs dans le gestionnaire d'utilisateurs. N'oubliez pas de supprimer la ligne supplémentaire de votre fichier configuration.php Lorsque vous avez terminé, soit en laissant Joomla essayer de le faire automatiquement lorsque vous y êtes invité, soit en modifiant le fichier manuellement.

Alternative 2: Ajouter un nouvel utilisateur Super-admin

Un nouvel utilisateur super-administrateur peut être créé en utilisant cette méthode:

  1. Ouvrez phpMyAdmin (ou similaire, en fonction de votre hébergement) et sélectionnez la base de données pour Joomla! site.
  2. Appuyez sur le bouton "SQL" dans la barre d’outils pour exécuter une requête SQL sur la base de données sélectionnée. Ceci affichera un champ appelé "Exécuter une requête/des requêtes SQL sur une base de données". Supprimez le texte de ce champ, copiez et collez la requête suivante ci-dessous et appuyez sur le bouton OK pour exécuter la requête et ajouter le nouvel utilisateur administrateur à la table:

    INSERT INTO `jos31_users`
    (`name`, `username`, `password`, `params`)
    VALUES ('Administrator2', 'admin2',
    'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '');
    INSERT INTO `jos31_user_usergroup_map` (`user_id`,`group_id`)
    VALUES (LAST_INSERT_ID(),'8');
    
  3. N'oubliez pas de remplacer les deux occurrences de jos31_ Par le préfixe utilisé par votre installation de Joomla (ceci est généralement facilement repérable dans phpMyAdmin).

  4. Vous pouvez maintenant accéder à votre site avec nom d'utilisateur , admin2 et mot de passe , secret . Assurez-vous de modifier votre mot de passe une fois que vous êtes connecté.

Alternative 3:

Créez un fichier PHP avec le code ci-dessous, téléchargez-le dans votre répertoire JOOMLAROOT/administrator et exécutez-le dans votre navigateur. Il vous connectera instantanément (à la fois Joomla 2.5 et 3), et autorisera. vous devez ajouter/modifier des utilisateurs. N'oubliez pas de supprimer le fichier une fois que vous avez terminé. Sinon, cela représentera un problème de sécurité énorme.

L'outil peut également être trouvé ici: http://myext.eu/en/j25-login

<?php
define('_JEXEC', 1);
define('DS', DIRECTORY_SEPARATOR);

if (file_exists(dirname(__FILE__) . '/defines.php')) {
    include_once dirname(__FILE__) . '/defines.php';
}

if (!defined('_JDEFINES')) {
    define('JPATH_BASE', dirname(__FILE__));
    require_once JPATH_BASE.'/includes/defines.php';
}

require_once JPATH_BASE.'/includes/framework.php';
require_once JPATH_BASE.'/includes/helper.php';
require_once JPATH_BASE.'/includes/toolbar.php';
$app = JFactory::getApplication('administrator');
JPluginHelper::importPlugin('user');
$user = JUser::getInstance();
$db = JFactory::getDBO();
$q = 'SELECT u.* FROM `#__users` as u
        LEFT JOIN `#__user_usergroup_map` as ug ON u.id = ug.user_id
        WHERE `block` = 0 AND `activation` = 0 AND ug.group_id = 8
        LIMIT 0,1';
$db->setQuery($q);

$user_tmp = $db->loadObject();
$user_tmp->guest = 0;
$user_tmp->isRoot = 1;
// $user_tmp->groups = array(8=>8);
// $user_tmp->_authGroups = array(1,8);
// $user_tmp->_authLevels = array(1,1,2,3);
// $user_tmp->gid = 1000;

foreach($user_tmp as $k=>$v){
    $user->set($k,$v);
}
$session = JFactory::getSession();
$session->set('user', $user);
$app = JFactory::getApplication();
$app->checkSession();
$app->redirect( JUri::base(), "" );
7
johanpw