Ajout d'un nouvel utilisateur directement dans la base de données

13

J'ai reçu les fichiers sur un site Drupal afin que je puisse créer un nouveau thème. Cependant, je n'ai pas reçu la date de l'utilisateur / mot de passe administrateur Drupal, donc je ne peux pas me connecter à la zone d'administration. Existe-t-il un moyen de créer un nouvel utilisateur directement dans la base de données ou d'une autre manière?

Jeanne
la source

Réponses:

10

Vous pouvez créer un nouvel utilisateur en ajoutant une ligne à la table des utilisateurs. Le champ du mot de passe doit contenir un mot de passe haché MD5. Vous pouvez utiliser des générateurs MD5 en ligne ou, si vous utilisez PHPMyAdmin, sélectionnez la fonction MD5 à côté de la zone de texte où vous entrez votre mot de passe simple. Prenez note de l'ID utilisateur (uid) de votre nouvel utilisateur. Après cela, vous devez rechercher un rôle disposant des autorisations suffisantes dans la table des rôles. Recherchez l'ID de rôle (débarrasser) et entrez l'uid et débarrassez-vous sur une nouvelle ligne dans la table users_roles.

S'il n'y a pas de rôle qui donne un accès administrateur, car le client fait tout avec l'utilisateur 1, vous devez effectuer une astuce légèrement plus sale. Enregistrez le hachage du mot de passe de l'utilisateur 1 quelque part et ajoutez temporairement un nouveau mot de passe pour l'utilisateur 1. Connectez-vous ensuite avec l'utilisateur 1, créez un nouveau compte pour vous-même, un nouveau rôle avec des autorisations suffisantes et ajoutez-vous à ce rôle. Après cela, modifiez l'utilisateur 1 dans la base de données et restaurez le mot de passe. Je peux recommander le rôle d'administrateur pour forcer un rôle à avoir toutes les autorisations à tout moment.

Jorrit Schippers
la source
13

Il existe un moyen beaucoup plus simple.

  1. Allez dans la base de données et modifiez le champ d'adresse e-mail de l'utilisateur avec l'ID 1 et définissez-le sur votre adresse e-mail.
  2. Accédez à http://mysite/useret cliquez sur le lien de récupération du mot de passe.
  3. Entrez votre adresse e-mail et vous obtiendrez un lien de récupération de mot de passe.

Bien sûr, cela suppose que vos systèmes de développement permettent à drupal d'envoyer des mails hors de la boîte. Cela est vrai pour la plupart des boîtiers Linux et OSX mais pas pour Windows.

BetaRide
la source
1
C'est vraiment plus simple. Une fois cela fait, l'OP peut créer un nouvel utilisateur et remettre le courrier électronique de l'utilisateur n ° 1 tel qu'il était auparavant, si cela est vraiment nécessaire.
kiamlaluno
Encore plus facile serait d'utiliser drush ulipour vous connecter en tant qu'utilisateur 1.
mbomb007
9

Vous pouvez également créer des utilisateurs et attribuer des rôles avec Drush , ainsi que modifier les mots de passe des utilisateurs existants.

Drush est un shell de ligne de commande et une interface de script pour Drupal, un véritable couteau suisse conçu pour faciliter la vie de ceux d'entre nous qui passent une partie de nos heures de travail à pirater l'invite de commande.

mpdonadio
la source
1
drush help uli
Drupac
5

Si vous avez accès à la base de données, exécutez la requête suivante

UPDATE users 
SET name='admin', 
pass='$S$Drl0vgZ9yuU9uc4JyaTMHxMPriC7q/PsOUOx52fCrVQSTpI/Tu4x',
status=1 
WHERE uid = 1;

les informations de connexion seront:

nom d'utilisateur = admin

mot de passe = drupal


RÉFÉRENCÉ ICI:

https://knackforge.com/blog/sivaji/different-ways-reset-drupal-admin-password

Craig Wayne
la source
2
$user = array();
$user['status'] = 1; //for active user
$user['mail'] = '[email protected]';
//profile field $user['profile_field_fname'] = 'Vikrant';
$user_account = array();
if($user_uid = module_name_get_uid_by_email($user['mail'])) { //It will use for update.
   $user_account = user_load(array(uid => $user_uid));
}

//save or update user information.
user_save($user_account, $user);

//Check existing record by email.
function module_name_get_uid_by_email($email){
   $query = db_query("SELECT uid FROM {users} WHERE mail = '%s'",$email);
   $result = db_fetch_object($query);
   return $result->uid;
}

Essayez le code ci-dessus.

Satya
la source
Merci - question idiote: dans quel fichier dois-je mettre ce code?
Jane
2

Si vous utilisez drush, vous pouvez utiliser drush upwd [user] --password="[newpassword]" ce qui (re) définit le mot de passe de l'utilisateur avec le nom spécifié. ( upwdest la version de commande courte pour user-password)

Exemple de drush: drush user-password someuser --password="correct horse battery staple" qui définit le mot de passe spécifié pour le nom d'utilisateur "someuser".

baikho
la source
1

Ce que vous pourriez faire, c'est accéder à la base de données, enregistrer l'ancien mot de passe administrateur, réinitialiser le mot de passe administrateur, puis vous connecter, créer un nouvel utilisateur, puis réinitialiser le mot de passe administrateur à ce qu'il était avant de commencer.

Si vous avez accès à drush, vous pouvez le faire:

cd <drupal root directory>
php scripts/password-hash.sh 'drupal'

puis prenez le mot de passe haché MD5 généré ci-dessus, et:

drush sql-cli
update users set name='admin', pass='pasted_big_hash_from_above' where uid=1;
quit

Cela devrait faire l'affaire.

( source )

EddieN120
la source