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) ywp_usermeta(metadatos de usuarios). - Busca filas en
wp_usermetadondemeta_keysea'wp_capabilities'(la clave donde se almacenan los roles de usuario) ymeta_valuecontenga'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, useWHERE ID = [ID_del_administrador], donde[ID_del_administrador]es elIDobtenido 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 campometa_valuepara cambiar roles u otras configuraciones, ya que puede corromper los datos y dejar el sitio inoperativo. Para cambiar roles es mejor usarwp-clio 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_prefixno 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:(Normalmente es algo como
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';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.
- Compruebe los usuarios con rol de administrador:Esto mostrará la lista de administradores, sus IDs y logins.
wp user list --role=administrator - Restablezca la contraseña de un usuario concreto:Reemplace
wp user update admin --user_pass='YourNewSecurePass123'adminpor 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.