{"id":3836,"date":"2026-09-18T00:45:09","date_gmt":"2026-09-17T22:45:09","guid":{"rendered":"https:\/\/mantenimientoweb.pro\/blog\/como-recuperar-una-contrasena-de-superadministrador-olvidada-en-prestashop-2\/"},"modified":"2026-09-18T00:45:11","modified_gmt":"2026-09-17T22:45:11","slug":"como-recuperar-una-contrasena-de-superadministrador-olvidada-en-prestashop-2","status":"publish","type":"post","link":"https:\/\/mantenimientoweb.pro\/blog\/como-recuperar-una-contrasena-de-superadministrador-olvidada-en-prestashop-2\/","title":{"rendered":"\u00bfC\u00f3mo recuperar una contrase\u00f1a de superadministrador olvidada en PrestaShop?"},"content":{"rendered":"<article>\n<p>  \u00bfC\u00f3mo recuperar una contrase\u00f1a de superadministrador olvidada en PrestaShop? \ud83d\udd10<\/p>\n<p>Hay olvidos inocentes: d\u00f3nde quedaron las llaves, qu\u00e9 d\u00eda era la reuni\u00f3n, por qu\u00e9 entramos a la cocina. Y luego est\u00e1 ese otro olvido, m\u00e1s teatral, m\u00e1s cruel: la contrase\u00f1a del superadministrador de PrestaShop. Una tienda funcionando, clientes navegando, pedidos entrando quiz\u00e1, y usted fuera del Back Office como un rey mirando su castillo desde el foso. La iron\u00eda es fina: el usuario con m\u00e1s permisos es, de pronto, el que menos puede hacer.<\/p>\n<p>Recuperar una contrase\u00f1a de superadministrador en PrestaShop no tiene por qu\u00e9 convertirse en una operaci\u00f3n de cirug\u00eda mayor. Pero tampoco conviene hacerlo con la ligereza de quien cambia una bombilla. Estamos hablando del acceso principal a una tienda online: productos, pedidos, clientes, m\u00f3dulos, m\u00e9todos de pago, datos personales y, en muchos casos, dinero real circulando como agua subterr\u00e1nea bajo el suelo.<\/p>\n<p>Esta gu\u00eda explica, con enfoque profesional, c\u00f3mo recuperar el acceso al panel de administraci\u00f3n de PrestaShop cuando se ha olvidado la contrase\u00f1a del superadministrador. Veremos el m\u00e9todo normal mediante correo electr\u00f3nico, la recuperaci\u00f3n desde base de datos, el uso de un script PHP seguro, las diferencias entre versiones antiguas y modernas, y las comprobaciones posteriores para no cerrar la puerta dejando una ventana abierta. \ud83d\udee0\ufe0f<\/p>\n<p>    <strong>Antes de tocar nada:<\/strong> esta gu\u00eda est\u00e1 pensada para propietarios leg\u00edtimos, administradores de sistemas, desarrolladores y responsables t\u00e9cnicos de una tienda PrestaShop. Si no tiene autorizaci\u00f3n sobre la instalaci\u00f3n, no contin\u00fae. En seguridad web, la frontera entre mantenimiento y abuso no es una l\u00ednea borrosa: es una puerta con nombre y apellido.<\/p>\n<p>    <strong>Contenido de la gu\u00eda<\/strong><\/p>\n<ul>\n<li><a href=\"#entender\">Qu\u00e9 significa ser superadministrador en PrestaShop<\/a><\/li>\n<li><a href=\"#metodo-normal\">M\u00e9todo 1: recuperar la contrase\u00f1a desde el Back Office<\/a><\/li>\n<li><a href=\"#sin-correo\">Qu\u00e9 hacer si el correo de recuperaci\u00f3n no llega<\/a><\/li>\n<li><a href=\"#base-datos\">M\u00e9todo 2: recuperar acceso desde la base de datos<\/a><\/li>\n<li><a href=\"#script\">M\u00e9todo 3: restablecer la contrase\u00f1a con un script PHP seguro<\/a><\/li>\n<li><a href=\"#sql\">M\u00e9todo 4: actualizaci\u00f3n SQL en instalaciones antiguas<\/a><\/li>\n<li><a href=\"#multitienda\">Consideraciones en PrestaShop multitienda<\/a><\/li>\n<li><a href=\"#errores\">Errores frecuentes y c\u00f3mo resolverlos<\/a><\/li>\n<li><a href=\"#seguridad\">Qu\u00e9 hacer despu\u00e9s de recuperar el acceso<\/a><\/li>\n<\/ul>\n<h2 id=\"entender\">Qu\u00e9 significa ser superadministrador en PrestaShop \ud83d\udc64<\/h2>\n<p>En PrestaShop, el superadministrador no es una criatura m\u00edstica escondida en una cueva digital. Es, t\u00e9cnicamente, un empleado registrado en la tabla de empleados de la base de datos, normalmente <code>ps_employee<\/code>, asociado a un perfil con permisos m\u00e1ximos. En muchas instalaciones ese perfil se llama <strong>SuperAdmin<\/strong> y suele tener el identificador <code>id_profile = 1<\/code>, aunque no conviene apostar la tienda a un \u201csuele\u201d.<\/p>\n<p>La diferencia entre un empleado com\u00fan y un superadministrador es la diferencia entre una llave de habitaci\u00f3n y una llave maestra. Uno puede gestionar pedidos o productos; el otro puede cambiar configuraciones cr\u00edticas, instalar m\u00f3dulos, tocar m\u00e9todos de pago, modificar permisos, acceder a datos sensibles y, si se equivoca con entusiasmo, derribar media tienda. Poder y fragilidad, juntos. Como un jarr\u00f3n caro en manos de alguien con prisa.<\/p>\n<p>Las credenciales de los empleados se almacenan en la base de datos, pero la contrase\u00f1a no deber\u00eda guardarse nunca en texto plano. PrestaShop utiliza hashes de contrase\u00f1a. En versiones antiguas se empleaban mecanismos m\u00e1s simples, hist\u00f3ricamente asociados a <code>_COOKIE_KEY_<\/code> y funciones como MD5. En versiones m\u00e1s recientes, PrestaShop ha ido adoptando sistemas de hashing m\u00e1s robustos y compatibles con pol\u00edticas de seguridad modernas. Por eso un consejo repetido en foros desde hace diez a\u00f1os puede ser hoy una receta peligrosa o, como m\u00ednimo, in\u00fatil.<\/p>\n<table>\n<thead>\n<tr>\n<th>Elemento<\/th>\n<th>Funci\u00f3n<\/th>\n<th>D\u00f3nde suele encontrarse<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>ps_employee<\/code><\/td>\n<td>Tabla que almacena usuarios del Back Office: email, contrase\u00f1a cifrada, estado activo, perfil, etc.<\/td>\n<td>Base de datos de PrestaShop. El prefijo puede no ser <code>ps_<\/code>.<\/td>\n<\/tr>\n<tr>\n<td><code>id_profile<\/code><\/td>\n<td>Define el perfil de permisos del empleado.<\/td>\n<td>Tabla <code>ps_employee<\/code> y tablas relacionadas con perfiles.<\/td>\n<\/tr>\n<tr>\n<td><code>_COOKIE_KEY_<\/code><\/td>\n<td>Clave interna usada por PrestaShop en distintos procesos criptogr\u00e1ficos, especialmente en instalaciones antiguas.<\/td>\n<td><code>app\/config\/parameters.php<\/code> en PrestaShop 1.7\/8 o <code>config\/settings.inc.php<\/code> en versiones antiguas.<\/td>\n<\/tr>\n<tr>\n<td>Back Office<\/td>\n<td>Panel de administraci\u00f3n de la tienda.<\/td>\n<td>Carpeta de administraci\u00f3n, normalmente renombrada por seguridad.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 id=\"metodo-normal\">M\u00e9todo 1: recuperar la contrase\u00f1a desde el Back Office \ud83d\udce9<\/h2>\n<p>Empecemos por lo sensato. Antes de abrir phpMyAdmin como quien abre una caja fuerte con un destornillador, pruebe el sistema de recuperaci\u00f3n integrado.<\/p>\n<ol>\n<li>Acceda a la URL de administraci\u00f3n de su tienda PrestaShop. Suele ser algo como <code>https:\/\/tudominio.com\/adminXXXX\/<\/code>, porque PrestaShop recomienda renombrar la carpeta de administraci\u00f3n.<\/li>\n<li>Haga clic en <strong>\u201cHe olvidado mi contrase\u00f1a\u201d<\/strong> o una opci\u00f3n similar.<\/li>\n<li>Introduzca el correo electr\u00f3nico asociado al usuario superadministrador.<\/li>\n<li>Revise la bandeja de entrada y tambi\u00e9n la carpeta de spam.<\/li>\n<li>Siga el enlace recibido y cree una nueva contrase\u00f1a segura.<\/li>\n<\/ol>\n<p>Este m\u00e9todo es el m\u00e1s limpio porque respeta el flujo interno de PrestaShop: genera el token adecuado, valida el tiempo de expiraci\u00f3n, aplica las reglas de contrase\u00f1a y actualiza el hash como corresponde. Es el equivalente digital de entrar por la puerta principal, con la llave correcta y sin despertar al perro.<\/p>\n<h3>Si no recuerda la URL del Back Office<\/h3>\n<p>En PrestaShop, la carpeta de administraci\u00f3n suele renombrarse durante la instalaci\u00f3n. Puede llamarse <code>admin123xyz<\/code>, <code>admin-dev<\/code>, <code>gestor-tienda<\/code> o cualquier otra combinaci\u00f3n. Para localizarla:<\/p>\n<ul>\n<li>Revise los archivos del servidor mediante FTP, SFTP o el administrador de archivos del hosting.<\/li>\n<li>Busque una carpeta cuyo nombre empiece por <code>admin<\/code> o que contenga archivos como <code>index.php<\/code> y subcarpetas propias del panel.<\/li>\n<li>Si usa control de versiones o documentaci\u00f3n interna, revise notas de despliegue. S\u00ed, esa documentaci\u00f3n que todos prometimos mantener al d\u00eda y que a veces envejece como yogur al sol.<\/li>\n<\/ul>\n<h2 id=\"sin-correo\">Qu\u00e9 hacer si el correo de recuperaci\u00f3n no llega \u2709\ufe0f<\/h2>\n<p>Si el correo de recuperaci\u00f3n no llega, no significa necesariamente que la contrase\u00f1a sea irrecuperable. A menudo el problema no est\u00e1 en el usuario, sino en el sistema de env\u00edo de correos. PrestaShop puede fallar al enviar emails por una mala configuraci\u00f3n SMTP, bloqueo del hosting, registros SPF\/DKIM ausentes, l\u00edmites del servidor o cambios recientes en la cuenta de correo.<\/p>\n<p>Compruebe lo siguiente:<\/p>\n<ul>\n<li><strong>Carpeta de spam:<\/strong> b\u00e1sico, s\u00ed; sorprendentemente efectivo, tambi\u00e9n.<\/li>\n<li><strong>Correo correcto:<\/strong> aseg\u00farese de que est\u00e1 usando el email asociado al empleado administrador.<\/li>\n<li><strong>Configuraci\u00f3n SMTP:<\/strong> si tiene acceso a archivos o base de datos, revise si la tienda usa SMTP personalizado.<\/li>\n<li><strong>Logs del servidor:<\/strong> algunos hostings registran errores de env\u00edo en paneles como cPanel, Plesk o registros de PHP.<\/li>\n<li><strong>Bloqueos del proveedor:<\/strong> en servidores compartidos, el env\u00edo mediante <code>mail()<\/code> puede estar limitado o deshabilitado.<\/li>\n<\/ul>\n<p>Si no puede recibir el correo, puede cambiar temporalmente el email del empleado desde la base de datos y luego usar el sistema de recuperaci\u00f3n normal. Es una soluci\u00f3n elegante cuando se hace con cuidado: se cambia el buz\u00f3n, se pide el enlace, se restablece la contrase\u00f1a y despu\u00e9s se deja todo documentado.<\/p>\n<h2 id=\"base-datos\">M\u00e9todo 2: recuperar acceso desde la base de datos \ud83d\uddc4\ufe0f<\/h2>\n<p>Cuando el correo no funciona y el acceso al Back Office est\u00e1 cerrado, la base de datos se convierte en el pasillo de servicio. No es tan vistoso como la entrada principal, pero permite llegar al mismo edificio. Eso s\u00ed: aqu\u00ed conviene caminar despacio.<\/p>\n<p>    <strong>Advertencia importante:<\/strong> antes de modificar la base de datos, haga una copia de seguridad completa. Exporte la base de datos desde phpMyAdmin, Adminer, el panel del hosting o mediante l\u00ednea de comandos. Una consulta mal escrita puede ser tan destructiva como una tormenta en una biblioteca.<\/p>\n<h3>1. Identifique el prefijo real de las tablas<\/h3>\n<p>Muchos tutoriales hablan de <code>ps_employee<\/code>, pero el prefijo puede ser distinto. Durante la instalaci\u00f3n, PrestaShop permite cambiarlo. Puede encontrarlo en:<\/p>\n<ul>\n<li><strong>PrestaShop 1.7, 8 y posteriores:<\/strong> normalmente en <code>app\/config\/parameters.php<\/code>, dentro del valor <code>database_prefix<\/code>.<\/li>\n<li><strong>PrestaShop 1.6 y anteriores:<\/strong> normalmente en <code>config\/settings.inc.php<\/code>, definido como <code>_DB_PREFIX_<\/code>.<\/li>\n<\/ul>\n<p>Si el prefijo es <code>ps_<\/code>, la tabla ser\u00e1 <code>ps_employee<\/code>. Si el prefijo es <code>abc_<\/code>, ser\u00e1 <code>abc_employee<\/code>. Parece una minucia, pero en bases de datos compartidas puede ser la diferencia entre arreglar su tienda y tocar otra cosa con cara de \u201cyo no he sido\u201d.<\/p>\n<h3>2. Localice el empleado administrador<\/h3>\n<p>Desde phpMyAdmin o su herramienta de base de datos, ejecute una consulta como esta, cambiando el prefijo si corresponde:<\/p>\n<pre>SELECT id_employee, firstname, lastname, email, active, id_profile, last_passwd_gen\nFROM ps_employee\nORDER BY id_employee ASC;<\/pre>\n<p>Busque el email del superadministrador. Si no est\u00e1 seguro de qu\u00e9 perfil es el de superadministrador, revise los perfiles:<\/p>\n<pre>SELECT p.id_profile, pl.name\nFROM ps_profile p\nLEFT JOIN ps_profile_lang pl ON p.id_profile = pl.id_profile\nORDER BY p.id_profile ASC;<\/pre>\n<p>En muchas tiendas, <code>id_profile = 1<\/code> corresponde a <strong>SuperAdmin<\/strong>. Pero insisto: verifique. En una instalaci\u00f3n con a\u00f1os, migraciones, traducciones y m\u00f3dulos administrativos, lo obvio a veces se comporta como un gato: aparece donde quiere.<\/p>\n<h3>3. Active el empleado si est\u00e1 deshabilitado<\/h3>\n<p>Si el usuario existe pero est\u00e1 inactivo, puede activarlo:<\/p>\n<pre>UPDATE ps_employee\nSET active = 1\nWHERE email = 'admin@tudominio.com';<\/pre>\n<p>Esto no cambia la contrase\u00f1a, pero evita un bloqueo silencioso: introducir la clave correcta y no poder entrar porque el empleado est\u00e1 desactivado. Pocas cosas irritan tanto como una puerta cerrada con la llave puesta.<\/p>\n<h3>4. Cambie temporalmente el email del administrador<\/h3>\n<p>Si el problema es que el email antiguo ya no existe, puede actualizarlo y luego usar la recuperaci\u00f3n normal del Back Office:<\/p>\n<pre>UPDATE ps_employee\nSET email = 'nuevo-correo@tudominio.com'\nWHERE email = 'correo-antiguo@tudominio.com';<\/pre>\n<p>Despu\u00e9s vaya al formulario de \u201cHe olvidado mi contrase\u00f1a\u201d y solicite el enlace al nuevo correo. Este m\u00e9todo evita manipular directamente el hash de la contrase\u00f1a, por lo que suele ser m\u00e1s seguro y compatible entre versiones.<\/p>\n<h2 id=\"script\">M\u00e9todo 3: restablecer la contrase\u00f1a con un script PHP seguro \ud83e\udde9<\/h2>\n<p>Si no puede usar el correo de recuperaci\u00f3n, el m\u00e9todo m\u00e1s recomendable suele ser ejecutar un peque\u00f1o script dentro de la propia instalaci\u00f3n de PrestaShop. \u00bfPor qu\u00e9? Porque permite utilizar las funciones internas de la plataforma para generar el hash correcto de la contrase\u00f1a. No obliga a adivinar si su tienda usa MD5, bcrypt, hashing legacy, compatibilidad de migraci\u00f3n o alg\u00fan matiz de versi\u00f3n.<\/p>\n<p>Es la diferencia entre copiar una llave a ojo y pedirle al cerrajero original que la fabrique. Menos \u00e9pica, mucho m\u00e1s fiable.<\/p>\n<p>    <strong>Medidas de seguridad para este script:<\/strong><\/p>\n<ul>\n<li>Use una contrase\u00f1a temporal fuerte.<\/li>\n<li>Nombre el archivo con algo dif\u00edcil de adivinar, por ejemplo <code>reset-admin-8f41x.php<\/code>.<\/li>\n<li>Suba el archivo solo el tiempo imprescindible.<\/li>\n<li>Si puede, restrinja el acceso por IP desde el servidor o mediante <code>.htaccess<\/code>.<\/li>\n<li>Elimine el archivo inmediatamente despu\u00e9s de usarlo.<\/li>\n<li>No lo deje en una carpeta p\u00fablica \u201cpor si acaso\u201d. Ese \u201cpor si acaso\u201d es donde nacen muchos incidentes.<\/li>\n<\/ul>\n<h3>Script recomendado<\/h3>\n<p>Cree un archivo PHP en la ra\u00edz de PrestaShop, junto a carpetas como <code>classes<\/code>, <code>config<\/code>, <code>modules<\/code> y <code>themes<\/code>. Ajuste el email y la nueva contrase\u00f1a:<\/p>\n<pre>&lt;?php\nrequire_once __DIR__ . '\/config\/config.inc.php';\n\n$email = 'admin@tudominio.com';\n$newPassword = 'Cambia-Esta-Clave-Temporal-!2025';\n\n$idEmployee = (int) Db::getInstance()-&gt;getValue(\n    'SELECT id_employee FROM `' . _DB_PREFIX_ . 'employee`\n     WHERE email = \"' . pSQL($email) . '\"'\n);\n\nif (!$idEmployee) {\n    die('No se encontr\u00f3 ning\u00fan empleado con ese email.');\n}\n\n$employee = new Employee($idEmployee);\n\nif (!Validate::isLoadedObject($employee)) {\n    die('No se pudo cargar el empleado.');\n}\n\nif (method_exists('Tools', 'hash')) {\n    $employee-&gt;passwd = Tools::hash($newPassword);\n} else {\n    $employee-&gt;passwd = md5(_COOKIE_KEY_ . $newPassword);\n}\n\n$employee-&gt;active = 1;\n$employee-&gt;last_passwd_gen = date('Y-m-d H:i:s', strtotime('-1 day'));\n\nif ($employee-&gt;update()) {\n    echo 'Contrase\u00f1a actualizada correctamente. Elimine este archivo ahora mismo.';\n} else {\n    echo 'No se pudo actualizar la contrase\u00f1a.';\n}<\/pre>\n<p>Despu\u00e9s acceda al archivo desde el navegador:<\/p>\n<pre>https:\/\/tudominio.com\/reset-admin-8f41x.php<\/pre>\n<p>Si el script muestra que la contrase\u00f1a se actualiz\u00f3 correctamente, entre al Back Office con el email indicado y la contrase\u00f1a temporal. Luego, desde el perfil del empleado, cambie esa contrase\u00f1a por una definitiva y robusta.<\/p>\n<p>    <strong>No olvide eliminar el script.<\/strong> No \u201cm\u00e1s tarde\u201d, no \u201ccuando termine el caf\u00e9\u201d, no \u201cma\u00f1ana\u201d. Ahora. Un archivo de restablecimiento abandonado en producci\u00f3n es una invitaci\u00f3n escrita en letras luminosas.<\/p>\n<h3>Por qu\u00e9 este m\u00e9todo es mejor que pegar un hash manualmente<\/h3>\n<p>Porque PrestaShop no ha usado siempre el mismo sistema de cifrado de contrase\u00f1as. Las versiones antiguas y modernas pueden comportarse de forma distinta. Adem\u00e1s, una tienda actualizada desde PrestaShop 1.6 a 1.7 u 8 puede arrastrar compatibilidades internas. El script aprovecha el propio n\u00facleo de PrestaShop y reduce el margen de error.<\/p>\n<p>Tambi\u00e9n evita una pr\u00e1ctica peligrosa: copiar consultas SQL encontradas en foros sin saber si corresponden a su versi\u00f3n. Internet est\u00e1 lleno de soluciones fosilizadas, \u00fatiles en su \u00e9poca, ahora algo peligrosas; como mapas de una ciudad antes de que construyeran autopistas encima.<\/p>\n<h2 id=\"sql\">M\u00e9todo 4: actualizaci\u00f3n SQL en instalaciones antiguas \u2699\ufe0f<\/h2>\n<p>En PrestaShop antiguos, especialmente instalaciones 1.6 y algunas tiendas legacy, era habitual restablecer la contrase\u00f1a actualizando el campo <code>passwd<\/code> con un hash basado en <code>_COOKIE_KEY_<\/code>. Este m\u00e9todo debe usarse con prudencia y solo si sabe que aplica a su versi\u00f3n.<\/p>\n<p>Primero localice la clave <code>_COOKIE_KEY_<\/code>. En PrestaShop 1.6 suele estar en:<\/p>\n<pre>config\/settings.inc.php<\/pre>\n<p>Ver\u00e1 una l\u00ednea parecida a esta:<\/p>\n<pre>define('_COOKIE_KEY_', 'una_clave_larga_y_unica_de_su_tienda');<\/pre>\n<p>Luego, en instalaciones antiguas compatibles con este esquema, podr\u00eda actualizar la contrase\u00f1a as\u00ed:<\/p>\n<pre>UPDATE ps_employee\nSET passwd = MD5('una_clave_larga_y_unica_de_su_tiendaNuevaContrase\u00f1aSegura123!')\nWHERE email = 'admin@tudominio.com';<\/pre>\n<p>Observe que no hay espacio entre la clave <code>_COOKIE_KEY_<\/code> y la nueva contrase\u00f1a. Aun as\u00ed, este m\u00e9todo no deber\u00eda ser su primera opci\u00f3n en PrestaShop 1.7, 8 o instalaciones actualizadas, porque puede no generar el hash correcto. En esos casos, use el script PHP anterior o el sistema de recuperaci\u00f3n por correo.<\/p>\n<p>    <strong>Regla pr\u00e1ctica:<\/strong> si no est\u00e1 seguro de la versi\u00f3n exacta o del sistema de hashing que usa su tienda, no use MD5 manualmente. Genere la contrase\u00f1a mediante PrestaShop.<\/p>\n<h2 id=\"multitienda\">Consideraciones en PrestaShop multitienda \ud83c\udfec<\/h2>\n<p>En instalaciones con multitienda, recuperar la contrase\u00f1a del superadministrador puede no bastar si el empleado no tiene asociaci\u00f3n correcta con las tiendas. PrestaShop gestiona permisos y accesos teniendo en cuenta tiendas, grupos y perfiles. La contrase\u00f1a abre la puerta, s\u00ed, pero quiz\u00e1 la puerta d\u00e9 a un pasillo equivocado.<\/p>\n<p>Revise si existe la tabla de relaci\u00f3n entre empleados y tiendas, normalmente:<\/p>\n<pre>ps_employee_shop<\/pre>\n<p>Puede consultar las asociaciones existentes:<\/p>\n<pre>SELECT es.id_employee, e.email, es.id_shop, s.name\nFROM ps_employee_shop es\nINNER JOIN ps_employee e ON e.id_employee = es.id_employee\nINNER JOIN ps_shop s ON s.id_shop = es.id_shop\nWHERE e.email = 'admin@tudominio.com';<\/pre>\n<p>Si el empleado no est\u00e1 asociado a ninguna tienda, podr\u00eda tener problemas de acceso o visibilidad dentro del Back Office. En ese caso, conviene comparar con otro superadministrador existente o revisar la configuraci\u00f3n desde base de datos con mucha cautela.<\/p>\n<p>Para asociar un empleado a todas las tiendas existentes, una consulta orientativa ser\u00eda:<\/p>\n<pre>INSERT IGNORE INTO ps_employee_shop (id_employee, id_shop)\nSELECT e.id_employee, s.id_shop\nFROM ps_employee e\nCROSS JOIN ps_shop s\nWHERE e.email = 'admin@tudominio.com';<\/pre>\n<p>De nuevo: cambie el prefijo <code>ps_<\/code> si su instalaci\u00f3n usa otro. Y haga copia de seguridad. Las bases de datos no perdonan el entusiasmo.<\/p>\n<h2 id=\"errores\">Errores frecuentes al recuperar una contrase\u00f1a de administrador PrestaShop \ud83d\udea7<\/h2>\n<h3>1. La nueva contrase\u00f1a no funciona<\/h3>\n<p>Puede ocurrir por varias razones:<\/p>\n<ul>\n<li>Se us\u00f3 un hash incompatible con la versi\u00f3n de PrestaShop.<\/li>\n<li>Se copi\u00f3 mal el valor de <code>_COOKIE_KEY_<\/code>.<\/li>\n<li>Se olvid\u00f3 cambiar el prefijo de tabla en la consulta SQL.<\/li>\n<li>El empleado est\u00e1 inactivo.<\/li>\n<li>El perfil del empleado no tiene permisos suficientes.<\/li>\n<li>Hay cach\u00e9 o sesiones antiguas interfiriendo, aunque esto no suele ser lo principal.<\/li>\n<\/ul>\n<p>Soluci\u00f3n recomendada: use el script PHP basado en las funciones internas de PrestaShop y confirme que <code>active = 1<\/code>.<\/p>\n<h3>2. No existe ning\u00fan empleado con ese email<\/h3>\n<p>Quiz\u00e1 est\u00e1 usando un correo antiguo, una cuenta eliminada o una instalaci\u00f3n clonada donde los datos cambiaron. Liste los empleados:<\/p>\n<pre>SELECT id_employee, firstname, lastname, email, active, id_profile\nFROM ps_employee;<\/pre>\n<p>Si no hay ning\u00fan superadministrador v\u00e1lido, puede ser necesario crear uno desde c\u00f3digo o duplicar cuidadosamente un empleado existente y asignarle el perfil correcto. Sin embargo, crear empleados directamente por SQL puede dejar campos incompletos. Es preferible cargar el n\u00facleo de PrestaShop y crear el objeto mediante sus clases internas.<\/p>\n<h3>3. El enlace de recuperaci\u00f3n dice que expir\u00f3<\/h3>\n<p>PrestaShop usa tokens de recuperaci\u00f3n con validez temporal. Si el enlace expir\u00f3, solicite uno nuevo. Si no llega, revise la configuraci\u00f3n de correo o cambie temporalmente el email desde la base de datos.<\/p>\n<h3>4. Aparece una p\u00e1gina en blanco al ejecutar el script<\/h3>\n<p>Una p\u00e1gina en blanco suele indicar un error PHP oculto. Active temporalmente el modo debug si sabe lo que hace, revise los logs del servidor o ejecute el script desde consola. En PrestaShop moderno, el modo debug puede activarse en archivos de configuraci\u00f3n, aunque no conviene dejarlo activo en producci\u00f3n.<\/p>\n<p>Tambi\u00e9n puede a\u00f1adir estas l\u00edneas al principio del script durante la prueba:<\/p>\n<pre>ini_set('display_errors', 1);\nerror_reporting(E_ALL);<\/pre>\n<p>Ret\u00edrelas despu\u00e9s. Mostrar errores en producci\u00f3n es como discutir asuntos privados con un meg\u00e1fono en la plaza.<\/p>\n<h3>5. El Back Office carga, pero no permite entrar<\/h3>\n<p>Revise:<\/p>\n<ul>\n<li>Que est\u00e1 usando la URL correcta del Back Office.<\/li>\n<li>Que el empleado est\u00e1 activo.<\/li>\n<li>Que el perfil tiene permisos.<\/li>\n<li>Que la contrase\u00f1a fue generada con el m\u00e9todo correcto.<\/li>\n<li>Que no hay reglas de seguridad del servidor bloqueando la sesi\u00f3n.<\/li>\n<li>Que el navegador acepta cookies.<\/li>\n<li>Que la fecha y hora del servidor son correctas.<\/li>\n<\/ul>\n<h2 id=\"seguridad\">Qu\u00e9 hacer despu\u00e9s de recuperar el acceso \ud83d\udee1\ufe0f<\/h2>\n<p>Recuperar la contrase\u00f1a es solo la mitad del trabajo. La otra mitad, menos visible pero m\u00e1s importante, consiste en averiguar por qu\u00e9 se perdi\u00f3 el acceso y asegurarse de que nadie m\u00e1s aprovech\u00f3 la situaci\u00f3n. En seguridad, celebrar demasiado pronto es una costumbre car\u00edsima.<\/p>\n<h3>1. Cambie la contrase\u00f1a temporal por una definitiva<\/h3>\n<p>Use una contrase\u00f1a larga, \u00fanica y aleatoria. Mejor una frase generada por un gestor de contrase\u00f1as que una ocurrencia memorable. Lo memorable para usted puede ser deducible para otros. La contrase\u00f1a ideal deber\u00eda parecerse a un bosque denso: dif\u00edcil de atravesar, sin caminos obvios.<\/p>\n<ul>\n<li>M\u00ednimo recomendable: 14-16 caracteres.<\/li>\n<li>Combine letras, n\u00fameros y s\u00edmbolos.<\/li>\n<li>No reutilice contrase\u00f1as de correo, hosting, FTP o WordPress.<\/li>\n<li>Gu\u00e1rdela en un gestor de contrase\u00f1as profesional.<\/li>\n<\/ul>\n<h3>2. Elimine archivos temporales<\/h3>\n<p>Si subi\u00f3 un script de restablecimiento, elim\u00ednelo inmediatamente. Compruebe tambi\u00e9n que no qued\u00f3 una copia con extensi\u00f3n diferente, por ejemplo <code>.bak<\/code>, <code>.txt<\/code> o <code>.old<\/code>. Los atacantes automatizados buscan precisamente ese tipo de descuidos.<\/p>\n<h3>3. Revise empleados y permisos<\/h3>\n<p>Desde el Back Office, revise todos los empleados:<\/p>\n<ul>\n<li>Desactive cuentas antiguas.<\/li>\n<li>Elimine usuarios desconocidos.<\/li>\n<li>Reduzca permisos innecesarios.<\/li>\n<li>No use una \u00fanica cuenta compartida para todo el equipo.<\/li>\n<li>Asigne perfiles seg\u00fan responsabilidades reales.<\/li>\n<\/ul>\n<p>La administraci\u00f3n de permisos es una forma de higiene. No luce mucho, nadie la aplaude, pero evita infecciones.<\/p>\n<h3>4. Compruebe m\u00f3dulos, archivos y actualizaciones<\/h3>\n<p>Un bloqueo de acceso puede ser solo un olvido. O puede ser s\u00edntoma de algo peor. Revise:<\/p>\n<ul>\n<li>Versiones de PrestaShop, m\u00f3dulos y tema.<\/li>\n<li>M\u00f3dulos desconocidos o instalados recientemente.<\/li>\n<li>Archivos modificados en fechas sospechosas.<\/li>\n<li>Registros de acceso del servidor.<\/li>\n<li>Errores en logs de PHP.<\/li>\n<li>Usuarios FTP, SFTP, SSH y panel de hosting.<\/li>\n<\/ul>\n<p>PrestaShop, como cualquier plataforma de comercio electr\u00f3nico, depende mucho de su ecosistema: m\u00f3dulos de pago, transportistas, conectores ERP, herramientas SEO, plantillas. Una tienda no se compromete siempre por la puerta principal; a veces entra el problema por un m\u00f3dulo abandonado, peque\u00f1o y polvoriento, como una rendija por donde se cuela el invierno.<\/p>\n<h3>5. Refuerce el acceso al Back Office<\/h3>\n<p>Algunas medidas recomendables:<\/p>\n<ul>\n<li>Use una URL de administraci\u00f3n no evidente.<\/li>\n<li>Proteja el directorio del Back Office con autenticaci\u00f3n adicional HTTP si su equipo puede gestionarlo.<\/li>\n<li>Restrinja el acceso por IP cuando sea viable.<\/li>\n<li>Instale una soluci\u00f3n fiable de doble factor de autenticaci\u00f3n si su versi\u00f3n o m\u00f3dulos lo permiten.<\/li>\n<li>Mantenga PHP en una versi\u00f3n soportada.<\/li>\n<li>Configure copias de seguridad autom\u00e1ticas y verificadas.<\/li>\n<li>Revise permisos de archivos y carpetas.<\/li>\n<\/ul>\n<h3>6. No rote <code>_COOKIE_KEY_<\/code> a la ligera<\/h3>\n<p>Algunos administradores, al ver la importancia de <code>_COOKIE_KEY_<\/code>, piensan en cambiarla como quien cambia una cerradura. Cuidado. Esa clave participa en distintos mecanismos internos y modificarla sin planificaci\u00f3n puede invalidar sesiones, afectar compatibilidades, provocar problemas con contrase\u00f1as antiguas o generar efectos secundarios dif\u00edciles de diagnosticar.<\/p>\n<p>Si sospecha que <code>_COOKIE_KEY_<\/code> fue expuesta, haga una evaluaci\u00f3n completa, pruebe en un entorno de staging y consulte documentaci\u00f3n espec\u00edfica para su versi\u00f3n de PrestaShop. Seguridad no es solo cerrar puertas; es saber qu\u00e9 paredes sostienen el techo.<\/p>\n<h2>Buenas pr\u00e1cticas para no volver a perder el acceso \ud83d\udccc<\/h2>\n<p>La mejor recuperaci\u00f3n de contrase\u00f1a es la que nunca hace falta. Suena a frase de manual, lo s\u00e9, pero algunas frases de manual sobreviven porque son ciertas.<\/p>\n<ul>\n<li><strong>Use un gestor de contrase\u00f1as:<\/strong> 1Password, Bitwarden, KeePass, Dashlane u otra soluci\u00f3n profesional.<\/li>\n<li><strong>Documente accesos cr\u00edticos:<\/strong> Back Office, hosting, base de datos, FTP\/SFTP, SSH, proveedor de dominio y correo.<\/li>\n<li><strong>Defina responsables:<\/strong> al menos dos personas autorizadas deber\u00edan saber c\u00f3mo recuperar acceso en caso de emergencia.<\/li>\n<li><strong>Evite cuentas compartidas:<\/strong> cada empleado debe tener su propio usuario.<\/li>\n<li><strong>Configure correo transaccional fiable:<\/strong> SMTP autenticado, SPF, DKIM y DMARC correctamente establecidos.<\/li>\n<li><strong>Pruebe las copias de seguridad:<\/strong> una copia que nunca se ha restaurado es una promesa, no una garant\u00eda.<\/li>\n<li><strong>Revise accesos peri\u00f3dicamente:<\/strong> especialmente despu\u00e9s de cambios de personal o proveedores.<\/li>\n<\/ul>\n<h2>Resumen r\u00e1pido de m\u00e9todos<\/h2>\n<table>\n<thead>\n<tr>\n<th>Situaci\u00f3n<\/th>\n<th>M\u00e9todo recomendado<\/th>\n<th>Riesgo<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Recuerda el email y el correo funciona<\/td>\n<td>Usar \u201cHe olvidado mi contrase\u00f1a\u201d desde el Back Office<\/td>\n<td>Bajo<\/td>\n<\/tr>\n<tr>\n<td>El email antiguo ya no existe<\/td>\n<td>Cambiar el email en <code>ps_employee<\/code> y solicitar recuperaci\u00f3n<\/td>\n<td>Medio-bajo<\/td>\n<\/tr>\n<tr>\n<td>No funciona el correo de recuperaci\u00f3n<\/td>\n<td>Usar script PHP con funciones internas de PrestaShop<\/td>\n<td>Medio, si se elimina el script despu\u00e9s<\/td>\n<\/tr>\n<tr>\n<td>Instalaci\u00f3n antigua de PrestaShop<\/td>\n<td>Actualizar hash con <code>_COOKIE_KEY_<\/code> solo si aplica<\/td>\n<td>Medio-alto si no se conoce la versi\u00f3n<\/td>\n<\/tr>\n<tr>\n<td>Multitienda con problemas de permisos<\/td>\n<td>Revisar <code>ps_employee_shop<\/code> y perfiles<\/td>\n<td>Medio<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Una \u00faltima llave bajo la luz<\/h2>\n<p>Olvidar la contrase\u00f1a de superadministrador en PrestaShop no es el fin de la tienda. Es un sobresalto, s\u00ed; una de esas escenas en las que el coraz\u00f3n golpea dos veces antes de que la cabeza empiece a trabajar. Pero con acceso al servidor, a la base de datos o al sistema de archivos, hay caminos razonables para recuperar el control.<\/p>\n<p>El orden importa: primero el m\u00e9todo oficial por correo; despu\u00e9s, si hace falta, el cambio de email en base de datos; luego el script que usa el propio n\u00facleo de PrestaShop; y solo en instalaciones antiguas, con plena conciencia, la actualizaci\u00f3n manual del hash. Lo r\u00e1pido y lo correcto no siempre son enemigos, pero cuando lo son, conviene elegir lo correcto. La prisa arregla contrase\u00f1as; la prudencia salva tiendas.<\/p>\n<p>Y cuando vuelva a entrar al Back Office, no cierre simplemente la pesta\u00f1a con alivio. Revise usuarios, permisos, m\u00f3dulos, logs y copias de seguridad. Una contrase\u00f1a recuperada es una puerta abierta de nuevo; una tienda asegurada es una casa donde se puede dormir tranquilo. \ud83d\udd10\u2728<\/p>\n<\/article>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfC\u00f3mo recuperar una contrase\u00f1a de superadministrador olvidada en PrestaShop? \ud83d\udd10 Hay olvidos inocentes: d\u00f3nde quedaron<\/p>\n","protected":false},"author":1,"featured_media":3835,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-3836","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mantenimiento"],"_links":{"self":[{"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/posts\/3836","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/comments?post=3836"}],"version-history":[{"count":1,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/posts\/3836\/revisions"}],"predecessor-version":[{"id":3837,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/posts\/3836\/revisions\/3837"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/media\/3835"}],"wp:attachment":[{"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/media?parent=3836"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/categories?post=3836"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/tags?post=3836"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}