¿Cómo recuperar una contraseña de superadministrador olvidada en PrestaShop? 🔐
Olvidar la contraseña de superadministrador en PrestaShop tiene algo de escena teatral: la tienda está ahí, los pedidos quizá siguen entrando, el catálogo respira, los clientes navegan… y usted, propietario legítimo del castillo, se queda fuera mirando la puerta como si fuera un turista. La tecnología, siempre tan servicial, decide recordarnos que una cadena de caracteres puede pesar más que una llave de hierro.
La buena noticia: en la mayoría de los casos no se “recupera” la contraseña antigua, sino que se restablece. Y esto no es un matiz menor. PrestaShop almacena las contraseñas mediante hashes, no como texto legible. Es decir, el sistema no sabe cuál era su contraseña; solo sabe reconocerla cuando se introduce correctamente. Como un perro fiel que no entiende su nombre escrito, pero reconoce la voz.
Esta guía explica, con rigor y sentido práctico, cómo recuperar el acceso al Back Office de PrestaShop cuando se ha olvidado la contraseña del superadministrador. Veremos métodos seguros desde el propio panel de administración, desde la base de datos con phpMyAdmin, mediante SQL y, cuando conviene hacerlo con más pulcritud, usando un pequeño script que aprovecha las clases internas de PrestaShop.
Antes de tocar nada: haga una copia de seguridad de la base de datos. Sí, incluso si “solo va a cambiar una contraseña”. Muchas tragedias digitales empezaron con esa frase tan inocente. 🧯
Qué significa ser superadministrador en PrestaShop 🧭
En PrestaShop, los usuarios que acceden al Back Office se guardan normalmente en la tabla ps_employee, aunque el prefijo ps_ puede variar según la instalación. El perfil de SuperAdmin suele corresponder al id_profile = 1. Ese usuario tiene acceso total: módulos, pedidos, clientes, catálogo, empleados, configuración, transportistas, pagos y, en general, a las entrañas de la tienda.
La diferencia entre un empleado limitado y un superadministrador es la diferencia entre mirar el escaparate y tener las llaves del almacén. Uno ve; el otro decide. Por eso conviene tratar este procedimiento como una operación sensible, no como una simple molestia administrativa.
Dependiendo de la versión, PrestaShop puede usar distintos mecanismos de hash para las contraseñas. Las versiones antiguas trabajaban con hashes basados en _COOKIE_KEY_ y MD5; las versiones modernas han ido incorporando sistemas más robustos mediante funciones y servicios internos. Esa transición —de lo viejo a lo nuevo, de la cerradura simple al cerrojo reforzado— explica por qué algunos tutoriales de Internet funcionan en una tienda antigua y fallan elegantemente en otra más reciente. Elegantemente, claro, como falla una persiana atascada un lunes por la mañana.
Antes de empezar: identifique versión, prefijo y acceso disponible 🔎
Antes de elegir el método, responda tres preguntas:
- ¿Tiene acceso al correo del empleado administrador? Si sí, use el restablecimiento normal del Back Office.
- ¿Tiene acceso a la base de datos? Por ejemplo, mediante phpMyAdmin, Adminer, DBeaver o consola MySQL.
- ¿Tiene acceso por FTP, SFTP o SSH? Esto permite usar un script de rescate más compatible con versiones modernas.
También necesitará conocer el prefijo de tablas. Aunque muchos ejemplos usan ps_employee, su tienda podría usar prst_employee, shop_employee o cualquier otro prefijo elegido durante la instalación.
Dónde encontrar el prefijo de tablas
| Versión aproximada | Archivo habitual | Dato a buscar |
|---|---|---|
| PrestaShop 1.6 | /config/settings.inc.php |
_DB_PREFIX_ y _COOKIE_KEY_ |
| PrestaShop 1.7, 8 y superiores | /app/config/parameters.php |
database_prefix y cookie_key |
Importante: el nombre de la carpeta de administración suele estar renombrado por seguridad, por ejemplo /admin784xk. Si no recuerda la URL del Back Office, revise las carpetas del servidor por FTP/SFTP.
Método 1: restablecer la contraseña desde el Back Office ✉️
El camino más limpio, menos invasivo y más recomendable es usar la opción nativa de PrestaShop:
- Acceda a la URL de administración, por ejemplo:
https://www.sutienda.com/adminXXXX/. - Haga clic en “Olvidé mi contraseña” o una opción similar.
- Introduzca el correo electrónico asociado al empleado administrador.
- Revise la bandeja de entrada y también spam, promociones o cuarentena del servidor.
- Siga el enlace de recuperación y defina una nueva contraseña segura.
Este método depende de que el correo esté bien configurado. Si PrestaShop no puede enviar emails porque el SMTP está mal, porque el hosting bloquea la función mail() o porque el dominio tiene registros SPF/DKIM rotos, el sistema hará lo que tantos sistemas hacen: prometer silencio con cara de eficiencia.
Qué revisar si no llega el email de recuperación
- Configuración de correo en Parámetros avanzados > Correo electrónico, si aún tiene acceso con otro usuario.
- Registros SPF, DKIM y DMARC del dominio.
- Carpeta de spam.
- Logs del servidor o del proveedor SMTP.
- Que el empleado esté activo en la tabla
employee. - Que la dirección email sea exactamente la asociada al usuario administrador.
Si este método funciona, no siga tocando la base de datos. La sobriedad también es una forma de inteligencia técnica.
Método 2: cambiar el email del superadministrador en la base de datos y usar recuperación 📬
Este es uno de los procedimientos más seguros cuando no tiene acceso al correo antiguo, pero sí puede entrar en phpMyAdmin o en la base de datos. La idea es sencilla: no se fuerza una contraseña desde fuera; se cambia el correo del empleado y luego se usa el mecanismo oficial de recuperación.
1. Localice el empleado administrador
En phpMyAdmin, abra la base de datos de PrestaShop y ejecute una consulta como esta, sustituyendo ps_ por el prefijo real de su instalación:
SELECT id_employee, firstname, lastname, email, active, id_profile, last_passwd_gen
FROM ps_employee
ORDER BY id_employee;
Si quiere localizar específicamente a los perfiles de superadministrador:
SELECT e.id_employee, e.firstname, e.lastname, e.email, e.active, e.id_profile
FROM ps_employee e
WHERE e.id_profile = 1;
En una instalación estándar, id_profile = 1 suele ser el perfil de SuperAdmin. Aun así, si la tienda ha sido muy personalizada o migrada varias veces, conviene revisar también las tablas de perfiles.
2. Cambie el email del empleado
Una vez identificado el id_employee, puede actualizar el correo:
UPDATE ps_employee
SET email = '[email protected]'
WHERE id_employee = 1
LIMIT 1;
Después vuelva a la pantalla de acceso del Back Office y solicite el restablecimiento de contraseña con ese nuevo correo.
Ventajas de este método:
- No necesita conocer el algoritmo exacto de hash usado por su versión.
- Usa el flujo nativo de PrestaShop.
- Reduce el riesgo de dejar una contraseña mal cifrada.
- Permite recuperar acceso sin editar código.
Método 3: restablecer contraseña por SQL en instalaciones antiguas 🗄️
Durante años, muchos administradores de PrestaShop recuperaban el acceso actualizando directamente el campo passwd de la tabla employee. En versiones antiguas, la contraseña se generaba combinando la clave interna _COOKIE_KEY_ con la nueva contraseña, normalmente mediante MD5.
Este método puede ser útil en PrestaShop 1.6 y algunas instalaciones 1.7 heredadas. Pero en PrestaShop 8 y versiones modernas no debe asumirse como universal. La seguridad evoluciona: lo que antes era llave maestra hoy puede ser una ganzúa oxidada.
1. Obtenga la cookie_key
En PrestaShop 1.6, busque en:
/config/settings.inc.php
Encontrará una línea similar a:
define('_COOKIE_KEY_', 'una_cadena_larga_de_caracteres');
En PrestaShop 1.7, 8 o superiores, suele estar en:
/app/config/parameters.php
Busque:
'cookie_key' => 'una_cadena_larga_de_caracteres',
2. Actualice la contraseña
Use una contraseña nueva, fuerte y temporal. Por ejemplo, una frase larga con símbolos y números. No use admin123, 123456 ni el nombre de la tienda. La comodidad es dulce, sí, pero a veces sabe a incendio.
UPDATE ps_employee
SET passwd = MD5(CONCAT('PEGUE_AQUI_SU_COOKIE_KEY', 'NuevaContraseñaTemporal_2026!')),
last_passwd_gen = NOW(),
active = 1
WHERE id_employee = 1
LIMIT 1;
Si su tabla contiene campos como reset_password_token o reset_password_validity, puede limpiarlos si existe algún bloqueo relacionado con tokens antiguos:
UPDATE ps_employee
SET reset_password_token = NULL,
reset_password_validity = NULL
WHERE id_employee = 1
LIMIT 1;
Precaución: no todas las versiones tienen las mismas columnas. Si MySQL devuelve un error indicando que una columna no existe, no insista: adapte la consulta a su estructura real. La base de datos no perdona la poesía mal escrita.
3. Entre al Back Office y cambie de nuevo la contraseña
Si el acceso funciona, entre inmediatamente en el Back Office y cambie la contraseña desde el perfil del empleado. Esto permite que PrestaShop la guarde usando el mecanismo correcto de su versión actual.
Método 4: restablecer la contraseña con un script seguro por consola ⚙️
Cuando se trabaja con PrestaShop moderno, una forma más elegante y compatible consiste en usar las propias clases de la aplicación para generar el hash de contraseña. Es como pedirle al cerrajero de la casa que haga la llave, en lugar de limarla a oscuras en el garaje.
Este método requiere acceso por SSH o terminal del hosting. Si no lo tiene, pídalo al proveedor. Muchos paneles como cPanel, Plesk o herramientas administradas ofrecen una terminal web.
1. Cree un archivo temporal en la raíz de PrestaShop
Nombre sugerido:
rescate-empleado.php
Contenido:
<?php
if (PHP_SAPI !== 'cli') {
http_response_code(403);
exit('Este script solo debe ejecutarse por consola.');
}
if ($argc < 3) {
echo "Uso: php rescate-empleado.php ID_EMPLEADO 'NuevaContraseñaSegura'\n";
exit(1);
}
$idEmployee = (int) $argv[1];
$newPassword = (string) $argv[2];
require_once __DIR__ . '/config/config.inc.php';
$employee = new Employee($idEmployee);
if (!Validate::isLoadedObject($employee)) {
echo "No se encontró el empleado con ID: {$idEmployee}\n";
exit(1);
}
if (method_exists('Employee', 'hashPassword')) {
$employee->passwd = Employee::hashPassword($newPassword);
} elseif (method_exists('Tools', 'hash')) {
$employee->passwd = Tools::hash($newPassword);
} else {
$employee->passwd = Tools::encrypt($newPassword);
}
$employee->active = 1;
$employee->last_passwd_gen = date('Y-m-d H:i:s');
if ($employee->update()) {
echo "Contraseña actualizada para: {$employee->email}\n";
echo "Elimine este archivo inmediatamente.\n";
exit(0);
}
echo "No se pudo actualizar la contraseña.\n";
exit(1);
2. Ejecútelo por SSH
Desde la raíz de la tienda:
php rescate-empleado.php 1 'NuevaContraseñaTemporal_2026!'
Sustituya 1 por el id_employee correcto. Si no lo conoce, consúltelo antes en la tabla ps_employee.
3. Elimine el archivo
Este paso no es decorativo. Borre el archivo inmediatamente:
rm rescate-empleado.php
Luego acceda al Back Office, cambie la contraseña una vez más desde la interfaz y revise los empleados activos.
No deje scripts de rescate en el servidor. Un archivo temporal olvidado puede convertirse en una puerta trasera involuntaria. La historia de la seguridad web está llena de “solo era para probar”.
Método 5: crear un nuevo superadministrador, solo si es imprescindible 🧑💼
Crear un nuevo empleado con perfil SuperAdmin directamente en la base de datos es posible, pero no es mi primera recomendación. Las columnas requeridas pueden variar entre versiones, módulos, migraciones y personalizaciones. Además, un empleado no es solo un email y una contraseña: puede tener permisos, idioma, estado, fechas, tokens y vínculos internos.
Si todavía existe un empleado administrador válido, es más seguro actualizar ese usuario que insertar uno nuevo a mano. Crear registros manualmente en PrestaShop sin usar sus clases internas puede dejar datos incompletos. Y los datos incompletos son como baldosas flojas: no siempre se ven, pero tarde o temprano alguien tropieza.
Si necesita crear un superadministrador porque todos los empleados fueron eliminados o están dañados, lo más prudente es hacerlo mediante un script que cargue PrestaShop y use la clase Employee. Aun así, en entornos críticos conviene que lo haga un desarrollador con acceso a logs y copia de seguridad.
Cómo saber si el problema no es realmente la contraseña 🕵️
A veces la contraseña es inocente. El usuario la escribe bien, pero PrestaShop no deja entrar por otro motivo. Antes de culpar a la memoria —esa biblioteca con goteras— revise estos escenarios:
- Empleado desactivado: en
ps_employee, el campoactivedebe estar en1. - Email incorrecto: puede haber un espacio, una dirección antigua o un dominio mal escrito.
- Carpeta admin equivocada: quizá intenta acceder a una ruta antigua tras una migración.
- Cookies o caché del navegador: pruebe en modo incógnito o en otro navegador.
- HTTPS mal configurado: errores de redirección pueden impedir sesiones estables.
- Tabla corrupta o migración incompleta: especialmente después de mover la tienda de servidor.
- Módulo de seguridad o firewall: puede bloquear IPs tras varios intentos fallidos.
- Espacio en disco lleno: sí, también pasa; y cuando pasa, la tienda se comporta como un animal cansado.
Consultas útiles para revisar empleados y perfiles 🧰
Estas consultas ayudan a diagnosticar el estado de los empleados del Back Office. Recuerde cambiar ps_ por el prefijo real.
Listar empleados
SELECT id_employee, firstname, lastname, email, active, id_profile, last_passwd_gen
FROM ps_employee
ORDER BY id_employee;
Activar un empleado
UPDATE ps_employee
SET active = 1
WHERE id_employee = 1
LIMIT 1;
Ver perfiles disponibles
SELECT p.id_profile, pl.name
FROM ps_profile p
LEFT JOIN ps_profile_lang pl ON p.id_profile = pl.id_profile
ORDER BY p.id_profile;
Asignar perfil de superadministrador
UPDATE ps_employee
SET id_profile = 1
WHERE id_employee = 1
LIMIT 1;
Cuidado: asignar id_profile = 1 otorga privilegios totales en una instalación estándar. No lo haga con cuentas compartidas, correos genéricos o usuarios cuyo origen no esté claro.
Diferencias por versión de PrestaShop 📌
PrestaShop ha cambiado mucho desde las ramas 1.5 y 1.6 hasta PrestaShop 8. La administración moderna convive con herencias del pasado, como una casa reformada que aún conserva una puerta antigua en el pasillo.
| Versión | Ruta de configuración habitual | Método recomendado | Comentario |
|---|---|---|---|
| PrestaShop 1.6 | /config/settings.inc.php |
Recuperación por email o SQL con _COOKIE_KEY_ |
El método MD5 heredado suele funcionar, aunque sigue siendo recomendable cambiar luego la contraseña desde el Back Office. |
| PrestaShop 1.7 | /app/config/parameters.php |
Email, cambio de email en DB o script con clases internas | Algunas instalaciones aceptan hashes heredados, otras dependen de mecanismos más modernos. |
| PrestaShop 8 | /app/config/parameters.php |
Recuperación nativa o script por consola | Evite confiar ciegamente en recetas antiguas de MD5. Use el sistema interno cuando sea posible. |
Después de recuperar el acceso: medidas obligatorias de seguridad 🛡️
Recuperar el acceso es solo la mitad del trabajo. La otra mitad consiste en asegurarse de que nadie más lo recupere por usted.
Lista de revisión tras entrar al Back Office:
- Cambie la contraseña temporal por una contraseña larga y única.
- Revise todos los empleados en Parámetros avanzados > Equipo o sección equivalente.
- Desactive usuarios antiguos, desconocidos o innecesarios.
- Compruebe que solo las personas adecuadas tengan perfil SuperAdmin.
- Active autenticación en dos factores si usa un módulo fiable para ello.
- Revise módulos instalados recientemente o de origen dudoso.
- Actualice PrestaShop, módulos y tema si hay parches de seguridad pendientes.
- Verifique permisos de archivos y carpetas.
- Elimine scripts temporales usados para el rescate.
- Revise logs del servidor, especialmente accesos al Back Office.
- Configure correctamente el envío de emails para futuras recuperaciones.
Una breve digresión: una vez vi una tienda perder el acceso administrativo porque el único superadministrador usaba un correo de un empleado que ya no trabajaba allí. El dominio seguía activo, la tienda seguía vendiendo, pero la cuenta de correo había sido eliminada. Nadie pensó en eso. Es curioso: vigilamos pasarelas de pago, firewalls y certificados SSL, pero a veces toda la continuidad del negocio cuelga de un buzón abandonado, como una lámpara vieja sostenida por un cable pelado.
Buenas prácticas para no volver a quedar fuera 🚪
- Use al menos dos superadministradores reales, asignados a correos corporativos activos y controlados.
- No comparta cuentas. Cada persona debe tener su propio usuario.
- Guarde credenciales en un gestor de contraseñas como Bitwarden, 1Password, KeePass o similar.
- Documente la URL del Back Office en un lugar seguro. No en un post-it pegado al monitor, por favor; el folclore de oficina también tiene límites.
- Configure SMTP profesional para que los emails de recuperación funcionen.
- Haga copias de seguridad periódicas de archivos y base de datos.
- Restrinja el acceso al Back Office por IP si el equipo trabaja desde ubicaciones conocidas.
- Audite permisos después de cada cambio de personal.
Errores frecuentes al recuperar una contraseña de PrestaShop ⚠️
Usar el prefijo de tabla equivocado
Muchos tutoriales usan ps_employee, pero su tienda puede tener otro prefijo. Si la consulta no devuelve resultados, no significa necesariamente que la tabla no exista; quizá se llama distinto.
Copiar mal la cookie_key
Un espacio de más, una comilla omitida o un carácter perdido bastan para que el hash no coincida. La precisión aquí es quirúrgica.
Intentar ver la contraseña antigua
No se puede. Y si alguien le promete “descifrarla” como si fuera un truco de feria, desconfíe. Los hashes seguros están diseñados precisamente para no revelar la contraseña original.
No borrar scripts temporales
Este error es más común de lo que parece. Se sube un archivo de rescate, se recupera el acceso, suena el teléfono, llega un pedido urgente… y el archivo queda ahí, esperando su momento como una ventana abierta en invierno.
No cambiar la contraseña temporal
Una contraseña creada durante una emergencia debe considerarse provisional. Úsela para entrar, luego cámbiela por una definitiva y guárdela correctamente.
Preguntas frecuentes sobre recuperar contraseña de superadministrador en PrestaShop ❓
¿Puedo recuperar la contraseña antigua del administrador?
No de forma normal ni recomendable. PrestaShop guarda hashes de contraseña, no contraseñas legibles. Lo correcto es restablecerla.
¿Cuál es el método más seguro?
Primero, el restablecimiento desde el Back Office por email. Si no tiene acceso al correo, cambiar el email en la tabla employee y usar el flujo nativo. Para versiones modernas, el script por consola usando clases internas de PrestaShop es más fiable que forzar un hash manual.
¿Funciona el método de MD5 con cookie_key en PrestaShop 8?
No debe asumirse. Puede funcionar en tiendas con compatibilidad heredada, pero PrestaShop moderno utiliza mecanismos más robustos. Para PrestaShop 8, es preferible usar recuperación por email o un script que invoque las funciones internas de la aplicación.
¿Qué hago si no tengo acceso a phpMyAdmin ni SSH?
Contacte con el proveedor de hosting o con el responsable técnico del servidor. Sin acceso al correo, a la base de datos o al sistema de archivos, no hay una vía legítima y segura para restablecer la cuenta.
¿Debo poner la tienda en mantenimiento?
No siempre es necesario. Si solo cambia el email o la contraseña de un empleado, puede hacerse sin interrumpir ventas. Pero si va a manipular archivos, revisar una posible intrusión o modificar datos sensibles, conviene trabajar con cautela e informar al equipo.
Una salida limpia, no una huida improvisada ✅
Recuperar una contraseña de superadministrador olvidada en PrestaShop no debería convertirse en una expedición desesperada por foros antiguos y consultas copiadas al azar. Hay un orden sensato: primero el email, luego la base de datos con cambios mínimos, después los métodos técnicos más profundos si la versión lo exige.
La paradoja es hermosa y un poco cruel: cuanto más segura es una tienda, menos dispuesta está a dejarle entrar por atajos. Y eso, aunque moleste en plena urgencia, es exactamente lo que queremos de una plataforma de comercio electrónico. Una puerta que se abre para cualquiera no es una puerta; es una invitación al desastre.
Así que respire. Haga copia de seguridad. Identifique la versión. Localice el empleado. Cambie lo justo. Entre. Refuerce. Y deje preparado el terreno para que la próxima vez —si la memoria vuelve a jugarle una mala pasada— la recuperación sea una maniobra serena, no una noche de tormenta frente a phpMyAdmin. 🔐