Agregar un nuevo usuario directamente en la base de datos

13

Me dieron los archivos en un sitio de Drupal para que pueda crear un nuevo tema. Sin embargo, no se me ha dado la fecha de usuario / contraseña de administrador de Drupal, por lo que no puedo iniciar sesión en el área de administración. ¿Hay alguna forma de crear un nuevo usuario directamente en la base de datos o de alguna otra manera?

Jane
fuente

Respuestas:

10

Puede crear un nuevo usuario agregando una fila a la tabla de usuarios. El campo de contraseña debe contener una contraseña hash MD5. Puede usar generadores MD5 en línea o, si está usando PHPMyAdmin, seleccione la función MD5 al lado del cuadro de texto donde ingrese su contraseña simple. Tome nota de la identificación de usuario (uid) de su usuario recién creado. Después de eso, debe encontrar un rol que tenga permisos suficientes en la tabla de roles. Encuentre la identificación del rol (rid) e ingrese el uid y el rid en una nueva fila en la tabla users_roles.

Si no hay un rol que otorgue acceso de administrador, ya que el cliente hace todo con el usuario 1, debe realizar un truco un poco más sucio. Guarde el hash de contraseña del usuario 1 en algún lugar y agregue temporalmente una nueva contraseña para el usuario 1. Luego, inicie sesión con el usuario 1, cree una nueva cuenta para usted, una nueva función con permisos suficientes y agréguese a esa función. Después de eso, edite el usuario 1 en la base de datos y restaure la contraseña. Puedo recomendar el rol de administrador para forzar un rol a tener todos los permisos en todo momento.

Jorrit Schippers
fuente
13

Hay una manera mucho más fácil.

  1. Vaya a la base de datos y cambie el campo de dirección de correo electrónico del usuario con la identificación 1 y configúrelo en su dirección de correo electrónico.
  2. Vaya http://mysite/usery haga clic en el enlace de recuperación de contraseña.
  3. Ingrese su dirección de correo electrónico y obtendrá un enlace de recuperación de contraseña.

Por supuesto, esto supone que sus sistemas de desarrollo permiten que drupal envíe correos de fábrica. Esto es cierto para la mayoría de las cajas de Linux y OSX, pero no para Windows.

BetaRide
fuente
1
Esto es realmente más fácil. Una vez hecho esto, el OP puede crear un nuevo usuario y volver a configurar el correo electrónico para el usuario # 1 como era antes, si es realmente necesario.
kiamlaluno
Aún más fácil sería usar drush ulipara iniciar sesión como usuario 1.
mbomb007
9

También puede crear usuarios y asignar roles con Drush , así como cambiar las contraseñas para los usuarios existentes.

Drush es un shell de línea de comando y una interfaz de scripting para Drupal, una verdadera navaja suiza diseñada para facilitarnos la vida a aquellos de nosotros que pasamos algunas de nuestras horas de trabajo pirateando el símbolo del sistema.

mpdonadio
fuente
1
drush help uli
Drupac
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;
}

Prueba el código anterior.

Satya
fuente
Gracias, pregunta tonta: ¿en qué archivo pondría este código?
Jane
2

Si utiliza drush , puede usar el drush upwd [user] --password="[newpassword]" que (re) establece la contraseña para el usuario con el nombre especificado. ( upwdes la versión corta del comando para user-password)

Ejemplo de drush: drush user-password someuser --password="correct horse battery staple" que establece la contraseña especificada para el nombre de usuario "someuser".

baikho
fuente
1

Lo que podría hacer es ingresar a la base de datos, guardar la contraseña de administrador anterior, restablecer la contraseña de administrador y luego iniciar sesión, crear un nuevo usuario y luego restablecer la contraseña de administrador a lo que era antes de comenzar.

Si tiene acceso a drush, puede hacer esto:

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

luego tome la contraseña hash MD5 generada anteriormente y:

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

Eso debería hacer el truco.

( fuente )

EddieN120
fuente