Hinzufügen eines neuen Benutzers direkt in der Datenbank

13

Ich habe die Dateien an eine Drupal-Site weitergeleitet, damit ich ein neues Thema erstellen kann. Ich habe jedoch kein Drupal-Administrator-Benutzer- / Kennwortdatum erhalten, sodass ich mich nicht im Administratorbereich anmelden kann. Gibt es eine Möglichkeit, einen neuen Benutzer direkt in der Datenbank oder auf eine andere Weise zu erstellen?

Jane
quelle

Antworten:

10

Sie können einen neuen Benutzer erstellen, indem Sie der Benutzertabelle eine Zeile hinzufügen. Das Passwortfeld muss ein MD5-Hash-Passwort enthalten. Sie können Online-MD5-Generatoren verwenden oder, wenn Sie PHPMyAdmin verwenden, die MD5-Funktion neben dem Textfeld auswählen, in das Sie Ihr einfaches Kennwort eingeben. Notieren Sie sich die Benutzer-ID (UID) Ihres neu erstellten Benutzers. Danach müssen Sie in der Rollentabelle eine Rolle finden, die über ausreichende Berechtigungen verfügt. Suchen Sie die Rollen-ID (rid) und geben Sie die UID und rid in eine neue Zeile in der Tabelle users_roles ein.

Wenn es keine Rolle gibt, die Administratorzugriff gewährt, da der Client alles mit Benutzer 1 erledigt, müssen Sie einen etwas schmutzigeren Trick ausführen. Speichern Sie den Kennwort-Hash von Benutzer 1 irgendwo und fügen Sie vorübergehend ein neues Kennwort für Benutzer 1 hinzu. Melden Sie sich dann bei Benutzer 1 an, erstellen Sie ein neues Konto, eine neue Rolle mit ausreichenden Berechtigungen, und fügen Sie sich dieser Rolle hinzu. Bearbeiten Sie anschließend Benutzer 1 in der Datenbank und stellen Sie das Kennwort wieder her. Ich kann die Administratorrolle empfehlen, um zu erzwingen, dass eine Rolle jederzeit alle Berechtigungen hat.

Jorrit Schippers
quelle
13

Es gibt einen viel einfacheren Weg.

  1. Gehen Sie in die Datenbank und ändern Sie das E-Mail-Adressfeld des Benutzers mit der ID 1 und geben Sie Ihre E-Mail-Adresse ein.
  2. Gehen Sie zu http://mysite/userund klicken Sie auf den Link zur Passwortwiederherstellung.
  3. Geben Sie Ihre E-Mail-Adresse ein und Sie erhalten einen Link zur Passwortwiederherstellung.

Dies setzt natürlich voraus, dass Ihr Entwicklungssystem es Drupal ermöglicht, E-Mails sofort zu versenden. Dies gilt für die meisten Linux- und Osx-Boxen, jedoch nicht für Windows.

BetaRide
quelle
1
Das ist wirklich einfacher. Sobald dies erledigt ist, kann das OP einen neuen Benutzer erstellen und die E-Mail für den Benutzer Nr. 1 wie zuvor zurücksetzen, falls dies wirklich erforderlich ist.
kiamlaluno
Noch einfacher wäre es, drush ulisich als Benutzer 1
anzumelden.
9

Sie können mit Drush auch Benutzer erstellen und Rollen zuweisen sowie Kennwörter für vorhandene Benutzer ändern.

Drush ist eine Kommandozeilen-Shell und ein Skript-Interface für Drupal, ein echtes Schweizer Taschenmesser, das denjenigen von uns das Leben erleichtern soll, die einen Teil ihrer Arbeitszeit damit verbringen, sich an der Kommandozeile zu hacken.

mpdonadio
quelle
1
drush help uli
Drupac
5

Wenn Sie Zugriff auf die Datenbank haben, führen Sie die folgende Abfrage aus

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

Die Anmeldedaten lauten:

Benutzername = admin

Passwort = Drupal


HIER BEZOGEN:

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

Craig Wayne
quelle
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;
}

Versuchen Sie den obigen Code.

Satya
quelle
Danke - dumme Frage: In welche Datei würde ich diesen Code schreiben?
Jane
2

Wenn Sie drush verwenden , können Sie verwenden, um drush upwd [user] --password="[newpassword]" das Kennwort für den Benutzer mit dem angegebenen Namen (neu) festzulegen. ( upwdist die Kurzbefehlsversion für user-password)

Beispiel aus drush: Hier wird drush user-password someuser --password="correct horse battery staple" das angegebene Passwort für den Benutzernamen "someuser" festgelegt.

baikho
quelle
1

Sie können in die Datenbank gehen, das alte Administratorkennwort speichern, das Administratorkennwort zurücksetzen und sich dann anmelden, einen neuen Benutzer erstellen und das Administratorkennwort auf den Stand vor dem Start zurücksetzen.

Wenn Sie Zugang zu drush haben, können Sie dies tun:

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

Nehmen Sie dann das oben generierte MD5-Hash-Passwort und:

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

Das sollte den Trick machen.

( Quelle )

EddieN120
quelle