15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar
21.10.2024

Cómo Restablecer Manualmente tu Contraseña de Administrador de WordPress

Perder el acceso a tu cuenta de administrador de WordPress no tiene que significar perder el control de tu sitio. Si el flujo estándar de correo electrónico “¿Olvidaste tu contraseña?” está roto — debido a configuraciones de correo incorrectas, una dirección de correo electrónico inaccesible o un registro de usuario dañado — puedes omitirlo por completo restableciendo la contraseña directamente a nivel de base de datos, sistema de archivos o shell.

Esta guía cubre cuatro métodos probados: phpMyAdmin, FTP a través de functions.php, WP-CLI por SSH y el Script de Restablecimiento de Emergencia de WordPress. Cada método se explica con pasos exactos, advertencias de seguridad y los escenarios específicos donde es la opción correcta.

Cuándo Falla el Flujo de Restablecimiento Estándar

Antes de recurrir a un método manual, comprende por qué falla el restablecimiento integrado. Las causas más comunes son:

  • Entrega de correo de WordPress rotawp_mail() depende de la función mail() de PHP o de un plugin SMTP. Si ninguno está configurado, el correo de restablecimiento se descarta silenciosamente.
  • Sin acceso a la bandeja de entrada del correo registrado — la cuenta fue creada con una dirección obsoleta.
  • Tabla wp_users dañada — poco frecuente, pero posible después de una migración fallida o un conflicto de plugins.
  • Bloqueado completamente fuera de wp-admin — los plugins de protección contra fuerza bruta (Wordfence, Limit Login Attempts) pueden bloquear el propio endpoint de restablecimiento.

Identificar la causa raíz es importante porque algunos métodos (WP-CLI, phpMyAdmin) corrigen la contraseña sin tocar el sistema de correo en absoluto, mientras que otros (el script de emergencia) requieren acceso HTTP al sitio.

Método 1: Restablecer la Contraseña a través de phpMyAdmin

Ideal para: Entornos de hosting compartido donde SSH no está disponible pero cPanel o un panel de control similar es accesible.

phpMyAdmin te da acceso directo de lectura/escritura a la base de datos MySQL o MariaDB que almacena todas las credenciales de usuarios de WordPress. Las contraseñas se almacenan como hashes bcrypt (WordPress 6.x+) o hashes MD5 (instalaciones heredadas). El selector de funciones integrado de phpMyAdmin gestiona el hashing automáticamente.

Paso 1: Abrir phpMyAdmin desde Tu Panel de Control

Inicia sesión en tu panel de control de hosting — cPanel, DirectAdmin o un panel personalizado. Localiza la sección Bases de datos y haz clic en phpMyAdmin. Si estás en un VPS con cPanel, la ruta es típicamente cPanel > Bases de datos > phpMyAdmin.

Paso 2: Seleccionar la Base de Datos de WordPress

En la barra lateral izquierda, haz clic en el nombre de la base de datos asociada con tu instalación de WordPress. Si no estás seguro de cuál base de datos es la correcta, abre wp-config.php en el directorio raíz de tu sitio y busca la constante DB_NAME.

Paso 3: Abrir la Tabla wp_users

Expande las tablas de la base de datos y haz clic en wp_users. Si tu instalación usa un prefijo de tabla personalizado (definido por $table_prefix en wp-config.php), la tabla se llamará <prefix>_users — por ejemplo, site7_users.

Paso 4: Editar la Fila del Usuario Administrador

  1. Encuentra la fila donde user_login coincide con tu nombre de usuario administrador. Para la mayoría de las instalaciones predeterminadas, esta es la fila con ID = 1.
  2. Haz clic en Editar (el ícono de lápiz).
  3. Localiza el campo user_pass.
  4. En el menú desplegable Función junto a user_pass, selecciona MD5.
  5. En el campo Valor, escribe tu nueva contraseña en texto plano.
  6. Desplázate hacia abajo y haz clic en Continuar.

Nota técnica importante: Seleccionar MD5 aquí es suficiente para el inicio de sesión inmediato porque WordPress realiza una verificación MD5 heredada al iniciar sesión y luego automáticamente vuelve a hashear la contraseña usando su algoritmo más robusto phpass o bcrypt tras una autenticación exitosa. No necesitas generar manualmente un hash bcrypt.

Paso 5: Verificar el Cambio

Navega a tu página de inicio de sesión de WordPress e inicia sesión con la nueva contraseña. Si el inicio de sesión es exitoso, WordPress actualizará silenciosamente el hash en la base de datos al algoritmo actual.

Método 2: Restablecer la Contraseña a través de FTP Modificando functions.php

Ideal para: Situaciones donde phpMyAdmin no está disponible pero las credenciales FTP/SFTP son accesibles.

Este método inyecta una llamada de restablecimiento de contraseña directamente en el ciclo de ejecución de WordPress añadiendo temporalmente código al archivo functions.php del tema activo.

Paso 1: Conectarse a través de FTP

Usa un cliente FTP como FileZilla o Cyberduck. Ingresa tu host FTP, nombre de usuario, contraseña y puerto (21 para FTP simple, 22 para SFTP — siempre prefiere SFTP cuando esté disponible). Navega a:

/public_html/wp-content/themes/<your-active-theme>/

Para confirmar qué tema está activo sin iniciar sesión en wp-admin, verifica la tabla wp_options en phpMyAdmin para la clave de opción template.

Paso 2: Descargar y Editar functions.php

Descarga functions.php a tu máquina local. Ábrelo en un editor de código (VS Code, Sublime Text o cualquier editor que preserve la codificación UTF-8 sin BOM). Añade la siguiente línea al final del archivo:

<?php
// Temporary password reset — REMOVE IMMEDIATELY AFTER USE
add_action( 'init', function() {
    wp_set_password( 'YourNewSecurePassword123!', 1 );
});

Reemplaza 'YourNewSecurePassword123!' con tu contraseña elegida. El segundo argumento (1) es el ID de usuario. Si tu cuenta de administrador no tiene el ID 1, consulta primero la tabla wp_users para confirmar el ID correcto.

Envolver la llamada en add_action( 'init', ... ) es más seguro que llamar a wp_set_password() directamente en el nivel superior del archivo, porque garantiza que las funciones del núcleo de WordPress estén completamente cargadas antes de la ejecución.

Paso 3: Subir e Iniciar Sesión

Guarda el archivo y súbelo de nuevo al servidor, sobreescribiendo el original. Carga cualquier página de tu sitio WordPress (incluso la página de inicio) para activar el hook init y ejecutar el cambio de contraseña. Luego navega a /wp-login.php e inicia sesión con la nueva contraseña.

Paso 4: Eliminar el Código Inmediatamente

Este paso es obligatorio. Dejar el código de restablecimiento en functions.php significa que cada carga de página restablece la contraseña al valor codificado, creando una vulnerabilidad de seguridad crítica. Descarga functions.php de nuevo, elimina las líneas que añadiste y vuelve a subirlo.

Método 3: Restablecer la Contraseña a través de WP-CLI (Línea de Comandos SSH)

Ideal para: Desarrolladores y administradores de sistemas con acceso SSH a un VPS o servidor dedicado. Este es el método más rápido y limpio.

WP-CLI es la interfaz de línea de comandos oficial para WordPress. Puede gestionar usuarios, plugins, temas y operaciones de base de datos sin necesidad de un navegador. Si estás ejecutando WordPress en un plan de VPS Hosting o un Servidor Dedicado, WP-CLI casi con certeza está disponible o es trivialmente instalable.

Paso 1: Verificar que WP-CLI Está Instalado

wp --info

Si el comando no se encuentra, instálalo:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

Paso 2: Navegar al Directorio Raíz de WordPress

cd /var/www/html

Ajusta la ruta para que coincida con tu directorio raíz real. Puedes verificar que estás en el directorio correcto comprobando la existencia de wp-config.php:

ls wp-config.php

Paso 3: Restablecer la Contraseña

wp user update 1 --user_pass="YourNewSecurePassword123!" --allow-root

El indicador --allow-root es obligatorio si estás ejecutando el comando como usuario root. Reemplaza 1 con el ID de usuario real si es necesario. Para buscar primero el ID correcto:

wp user list --fields=ID,user_login,user_email --allow-root

Paso 4: Confirmar la Actualización

WP-CLI mostrará Success: Updated user 1. al completarse. Puedes verificar inmediatamente el cambio:

wp user get 1 --field=user_pass --allow-root

Esto devuelve el nuevo hash bcrypt, confirmando que el registro fue actualizado. Inicia sesión en wp-admin para completar el proceso.

Caso especial — instalaciones multisitio: En WordPress Multisite, prefija el comando con --url=yoursite.com para apuntar al subsitio correcto:

wp user update 1 --user_pass="YourNewSecurePassword123!" --url=yoursite.com --allow-root

Método 4: Restablecer la Contraseña a través del Script de Emergencia de WordPress

Ideal para: Escenarios donde tienes acceso FTP pero no SSH, no phpMyAdmin, y el método functions.php es impracticable (por ejemplo, el tema activo es un tema de bloques sin functions.php).

El Codex de WordPress proporciona un script PHP de restablecimiento de emergencia independiente (emergency.php) que se ejecuta independientemente de la instalación de WordPress. Solicita una nueva contraseña, la hashea correctamente y la escribe directamente en la base de datos usando las credenciales de wp-config.php.

Paso 1: Obtener el Script

Descarga el script del repositorio oficial de GitHub de WordPress o del Codex. La fuente canónica es:

https://codex.wordpress.org/Resetting_Your_Password#Through_the_emergency_password_reset_script

Guarda el archivo como emergency.php.

Paso 2: Subir al Directorio Raíz de WordPress

Usando tu cliente FTP, sube emergency.php al mismo directorio que contiene wp-config.php — típicamente /public_html/ o /var/www/html/.

Paso 3: Ejecutar el Script en un Navegador

Abre un navegador y navega a:

https://yourdomain.com/emergency.php

El script leerá wp-config.php automáticamente para obtener las credenciales de la base de datos, luego presentará un formulario para ingresar y confirmar una nueva contraseña. Envía el formulario para aplicar el cambio.

Paso 4: Eliminar el Script Inmediatamente

Esto es crítico. El script no tiene capa de autenticación — cualquier persona que conozca la URL puede usarla para tomar el control de tu sitio. Elimínalo en el momento en que hayas recuperado el acceso:

rm /var/www/html/emergency.php

O elimínalo a través de FTP. Verifica la eliminación intentando cargar la URL nuevamente — debe devolver un 404.

Comparación de Métodos

MétodoRequiere SSHRequiere FTPRequiere Acceso a BDModifica Archivos del TemaVelocidadRiesgo de Seguridad si se Deja Activo
phpMyAdminNoNoSí (a través del panel)NoRápidoNinguno
`functions.php` a través de FTPNoNoMedioCrítico
WP-CLI a través de SSHNoNoNoMás rápidoNinguno
Script de EmergenciaNoNoNoMedioCrítico

Refuerzo de Seguridad Después de un Restablecimiento de Contraseña

Recuperar el acceso es solo el primer paso. Un restablecimiento manual forzado a menudo señala un problema más profundo — una cuenta comprometida, un servidor mal configurado o un sistema de correo roto. Aborda estos problemas de inmediato:

  • Audita los inicios de sesión recientes. Verifica wp_usermeta para session_tokens para ver las sesiones activas. Destruye todas las sesiones con wp user session destroy --all --allow-root.
  • Rota las claves secretas. Genera nuevos valores en https://api.wordpress.org/secret-key/1.1/salt/ y reemplaza las constantes correspondientes en wp-config.php. Esto invalida todas las cookies existentes.
  • Corrige la entrega de correo de WordPress. Instala un plugin SMTP (WP Mail SMTP, Postman SMTP) y conéctalo a un servicio de correo transaccional (SendGrid, Mailgun, Amazon SES) para que el flujo de restablecimiento estándar funcione en el futuro.
  • Habilita la autenticación de dos factores. Plugins como WP 2FA o Google Authenticator añaden una segunda capa de verificación que hace mucho menos probable los bloqueos por fuerza bruta.
  • Revisa los permisos de archivos. wp-config.php debe ser 640 o 600. El archivo functions.php debe ser 644. Los archivos con permisos de escritura para todos (777) son una señal de alerta inmediata.
  • Verifica cuentas de administrador no autorizadas. Ejecuta wp user list --role=administrator --allow-root y elimina cualquier cuenta que no reconozcas.

Para entornos de producción alojados en un Servidor Dedicado, también revisa /var/log/auth.log (o /var/log/secure en sistemas basados en RHEL) para detectar intentos de fuerza bruta SSH que puedan haber precedido al bloqueo.

Si tu sitio maneja datos sensibles de usuarios o transacciones de comercio electrónico, complementa tu inicio de sesión reforzado con un Certificado SSL correctamente emitido para garantizar que las credenciales nunca se transmitan en texto plano.

Matriz de Decisión: ¿Qué Método Deberías Usar?

Usa esta lista de verificación para seleccionar el método correcto para tu situación:

  • Tienes acceso a cPanel o DirectAdmin — usa phpMyAdmin (Método 1). Es el más seguro y no requiere modificaciones de archivos.
  • Tienes FTP/SFTP pero no panel de base de datos — usa functions.php (Método 2), pero configura un recordatorio en el calendario para eliminar el código dentro de los cinco minutos de haber iniciado sesión.
  • Tienes acceso SSH a un VPS o servidor dedicado — usa WP-CLI (Método 3). Es el más limpio, no deja código residual y admite scripting para automatización.
  • Tienes FTP pero el tema activo no tiene functions.php (temas de bloques, temas FSE) — usa el Script de Emergencia (Método 4) y elimínalo antes de cerrar la pestaña del navegador.
  • Ninguna de las opciones anteriores está disponible — contacta al equipo de soporte de tu proveedor de hosting. Pueden restablecer la contraseña de la base de datos a nivel de infraestructura.

Preguntas Frecuentes

P: ¿Restablecer la contraseña a través de phpMyAdmin cerrará las sesiones activas?

No. Cambiar user_pass en la base de datos no invalida las cookies de autenticación de WordPress existentes. Para forzar el cierre de todas las sesiones, también debes actualizar las claves secretas en wp-config.php o usar wp user session destroy --all.

P: Mi tabla wp_users está vacía o falta. ¿Qué ocurrió?

Esto generalmente indica una migración de base de datos fallida, una importación dañada o un $table_prefix mal configurado en wp-config.php. Verifica que el prefijo coincida con los nombres de tabla reales en phpMyAdmin. Si la tabla realmente falta, restaura desde una copia de seguridad de la base de datos.

P: ¿Puedo usar MD5 en phpMyAdmin aunque WordPress ahora use bcrypt?

Sí. La capa de autenticación de WordPress detecta las contraseñas hasheadas con MD5 al iniciar sesión y las acepta por compatibilidad con versiones anteriores, luego inmediatamente vuelve a hashear la contraseña usando el algoritmo actual (phpass/bcrypt). El hash MD5 solo se almacena temporalmente hasta el próximo inicio de sesión exitoso.

P: El comando wp user update de WP-CLI devuelve un error de permisos. ¿Cómo lo soluciono?

Esto generalmente significa que WP-CLI se está ejecutando como un usuario del sistema diferente al propietario de los archivos de WordPress. Cambia al usuario correcto con sudo -u www-data wp user update ... o añade el indicador --allow-root si estás operando como root.

P: ¿Es seguro dejar el script de emergencia en el servidor durante unas horas?

No. El script de emergencia no tiene autenticación. Cualquier visitante que descubra o adivine la URL puede usarla para restablecer tu contraseña de administrador y tomar el control total de tu sitio. Elimínalo inmediatamente después de su uso — trátalo con la misma urgencia que una clave privada expuesta.

15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar