Restaurar el password de administrador con SQL en Drupal 8

Author Top
enzo

1. El Problema.

Cuando en Drupal 8, se pierde la contraseña de usuario #1 (administrador) y las notificaciones de correo electrónico no funcionan, es posible restaurar la contraseña a través de un par de actualizaciones a la base de datos.

En este momento estamos en el medio del desarrollo de Drupal 8 y el comando drush uli habitualmente proporcionado por Drush no funciona.

En este momento cuando trato de ejecutar ese comando me dieron el siguiente error.

Fatal error: Call to undefined function url() in /Users/enzo/.composer/vendor/drush/drush/commands/user/user.drush.inc on line 466
Drush command terminated abnormally due to an unrecoverable error.

2. La Solución.

2.1 Generar una nueva contraseña

En primer lugar, usted tiene que generar un hash de la contraseña que sea válida para su sitio, para esto necesitamos ejecutar el siguiente comando desde la línea de comandos, en el directorio raíz de Drupal 8:

$ php core/scripts/password-hash.sh 'your-new-pass-here'

password: your-new-pass-here    hash: $S$EV4QAYSIc9XNZD9GMNDwMpMJXPJzz1J2dkSH6KIGiAVXvREBy.9E

Tenga cuidado de no incluir más o menos caracteres del hash. Los hashes parecen algo así como $S$EV4QAYSIc9XNZD9GMNDwMpMJXPJzz1J2dkSH6KIGiAVXvREBy.9E.

Vamos a utilizar la contraseña generada después.

2.2 Actualización de la contraseña de usuario.

Ahora debemos que actualizar la contraseña de usuario, en nuestro caso tenemos que actualizar la contraseña de administrador, afortunadamente, el UID para el administrador es 1 al igual a las versiones anteriores de Drupal.

Con la nueva contraseña que necesitamos ejecutar la siguiente instrucción SQL.

UPDATE users_field_data SET pass='$S$E5j59pCS9kjQ8P/M1aUCKuF4UUIp.dXjrHyvnE4PerAVJ93bIu4U' WHERE uid = 1;

2.3 Lidiar con Cache.

En este punto, si intenta iniciar sesión en el sitio web de Drupal 8 será rechazada, esto porque el sistema de inicio de sesión no lee directamente la tabla users_field_data en su lugar usa un tabla de caché para las entidades de usuario.

Para vaciar la caché para una entidad específica de usuario en este caso el usuario #1 y sin comprometer del resto del caché del sistema, puede utilizar la siguiente sentencia SQL.

DELETE FROM cache_entity WHERE cid = 'values:user:1';

Ahora usted puede tomar una taza de café/té y disfrutar de su sitio web con Drupal 8.

Espero que hayas encontrado este artículo útil.