Bandera: Русский Русский Bandera: English English

Cómo recuperar el acceso al administrador de WordPress: restablecer la contraseña a través de la base de datos

Publicado el 14.07.2025

Perder el acceso a la cuenta administrativa de WordPress puede convertirse en un verdadero dolor de cabeza. A veces los métodos estándar para recuperar la contraseña (por email) no funcionan, especialmente si:

  • Has olvidado tanto el login como la contraseña.
  • La función de envío de correo (wp_mail) del sitio no funciona.
  • El panel administrativo de WordPress está roto o no está disponible.
  • El único acceso disponible es a la base de datos (a través de un cliente MySQL, phpMyAdmin, WP-CLI, etc.).

En este artículo repasaremos un método fiable y seguro para encontrar al administrador de WordPress directamente en la base de datos y restablecer su contraseña mediante SQL. Tendremos en cuenta las mejores prácticas de DevSecOps para evitar dañar datos serializados y minimizar riesgos.


1. Cómo encontrar al administrador de WordPress en la base de datos

Antes de restablecer la contraseña, necesitamos encontrar el identificador (ID) de la cuenta de administrador.

Paso 1: Conectar a la base de datos

Primero conéctese a su base de datos MySQL. Si utiliza la línea de comandos, se hace así:

mysql -u root -p -D wordpress_db

Importante: Reemplace root por el nombre de usuario de su base de datos y wordpress_db por el nombre real de su base de datos de WordPress. El nombre de la base de datos se puede encontrar en el archivo wp-config.php en la constante DB_NAME.

Paso 2: Ejecutar la consulta SQL para buscar al administrador

Ahora ejecute la siguiente consulta SQL para encontrar usuarios con el rol de administrador:

SELECT
    u.ID,
    u.user_login,
    u.user_email,
    m.meta_value AS role
FROM
    wp_users u
JOIN
    wp_usermeta m ON u.ID = m.user_id
WHERE
    m.meta_key = 'wp_capabilities' AND m.meta_value LIKE '%administrator%';

¿Qué hace esta consulta?

  • Une las tablas wp_users (usuarios) y wp_usermeta (metadatos de usuarios).
  • Busca filas en wp_usermeta donde meta_key sea 'wp_capabilities' (la clave donde se almacenan los roles de usuario) y meta_value contenga 'administrator'.
  • Devuelve ID, login (user_login), email (user_email) y el rol real del usuario.

Atención: Si su WordPress usa un prefijo de tabla no estándar (no wp_), reemplace wp_users, wp_usermeta y wp_capabilities por su prefijo. Se puede encontrar en wp-config.php en la variable $table_prefix. Por ejemplo, si $table_prefix = 'custom_', entonces wp_users será custom_users.


2. Cómo restablecer la contraseña del administrador mediante SQL

WordPress almacena las contraseñas de forma cifrada, usando algoritmos seguros (normalmente bcrypt). Sin embargo, para una recuperación temporal del acceso se puede establecer la contraseña usando la función MD5. En el siguiente inicio de sesión, WordPress actualizará automáticamente el hash a uno más seguro.

Ejecute la siguiente consulta SQL para restablecer la contraseña:

UPDATE wp_users
SET user_pass = MD5('YourNewSecurePass123')
WHERE user_login = 'admin'; -- O use el ID del usuario: WHERE ID = 1;

Importante:

  • Reemplace 'YourNewSecurePass123' por una contraseña fuerte y única.
  • Reemplace 'admin' por el login real del administrador encontrado en el paso anterior. Si tiene varios administradores o desea ser más preciso, use WHERE ID = [ID_del_administrador], donde [ID_del_administrador] es el ID obtenido en la primera consulta.

Después de ejecutar esta consulta podrá iniciar sesión en el panel administrativo de WordPress con el login y la nueva contraseña indicados.

⚠️ EXTREMADAMENTE IMPORTANTE: No deje la contraseña en MD5 por mucho tiempo! MD5 es un algoritmo obsoleto y poco seguro, vulnerable a ataques con tablas rainbow. Después de iniciar sesión en el administrador de WordPress CAMBIE LA CONTRASEÑA INMEDIATAMENTE desde la interfaz (Perfil -> Cambiar contraseña). WordPress la volverá a hashear con bcrypt, dejándola segura.


3. Problemas posibles y limitaciones de este método

Al usar acceso directo a la base de datos siempre existen riesgos:

  • MD5 es obsoleto: Como se ha mencionado, MD5 no es seguro para almacenar contraseñas. Úselo solo como solución temporal.
  • Datos serializados dañados: La tabla wp_usermeta (donde se almacenan los roles) contiene arrays PHP serializados. No intente editar directamente el campo meta_value para cambiar roles u otras configuraciones, ya que puede corromper los datos y dejar el sitio inoperativo. Para cambiar roles es mejor usar wp-cli o un script PHP.
  • Falta de auditoría: Los cambios realizados directamente por SQL no se registran en WordPress. Esto dificulta el seguimiento de incidentes de seguridad o la investigación de problemas.
  • Complicaciones con prefijos personalizados: No olvide adaptar las consultas SQL si su WordPress usa un table_prefix no estándar.

4. Ventajas de este método de recuperación

A pesar de las limitaciones, este método es muy útil en situaciones críticas:

  • Funciona sin acceso a la interfaz web: Permite recuperar el acceso cuando el panel de administración de WordPress no funciona.
  • Mínimas dependencias: Solo necesita acceso a la línea de comandos de MySQL o a phpMyAdmin.
  • Recuperación rápida del control: Permite volver a tomar control del sitio con rapidez ante fallos, pérdida de credenciales o incluso tras una compromisión.
  • Apto para automatización: Puede formar parte de scripts de despliegue o recuperación (por ejemplo, mediante Bash, Ansible).

5. Recomendaciones tras recuperar el acceso con éxito

Una vez que haya iniciado sesión en el admin de WordPress:

  • Cambie la contraseña inmediatamente desde el perfil de usuario: Esto la volverá a hashear en un formato seguro (bcrypt).
  • Asegúrese de que el usuario tiene el rol correcto:
    SELECT meta_value FROM wp_usermeta
    WHERE user_id = (SELECT ID FROM wp_users WHERE user_login = 'TU_LOGIN_ADMIN')
      AND meta_key = 'wp_capabilities';
    
    (Normalmente es algo como a:1:{s:13:"administrator";b:1;}. ¡No cambie esto manualmente!).
  • Verifique que el correo (user_email) esté actualizado: Esto es crítico para futuros restablecimientos de contraseña mediante los mecanismos estándar de WordPress.

6. Bonus: método WP-CLI (si está disponible)

Si tiene acceso a WP-CLI (la interfaz de línea de comandos de WordPress), este es el método más seguro, sencillo y recomendado para restablecer contraseñas, porque WP-CLI interactúa correctamente con los mecanismos internos de WordPress, incluyendo el hash de contraseñas y los datos serializados.

  1. Compruebe los usuarios con rol de administrador:
    wp user list --role=administrator
    
    Esto mostrará la lista de administradores, sus IDs y logins.
  2. Restablezca la contraseña de un usuario concreto:
    wp user update admin --user_pass='YourNewSecurePass123'
    
    Reemplace admin por el login del administrador deseado y 'YourNewSecurePass123' por su nueva contraseña. WP-CLI se encargará del hash correctamente.

Conclusión

Recuperar el acceso administrativo a WordPress mediante una consulta SQL directa es un método potente y eficaz para situaciones de emergencia. Permite recuperar el control del sitio rápidamente cuando otros métodos no están disponibles. Lo fundamental es actuar con cautela, comprender los riesgos asociados a MD5 y usar este método solo como medida temporal, cambiando la contraseña inmediatamente desde la interfaz de WordPress tras el acceso. Si es posible, siempre prefiera WP-CLI como herramienta más segura y predecible.

¿Necesitas ayuda?

Escríbeme y te ayudaré a resolver el problema

Publicaciones relacionadas