Crear un usuario administrador en WordPress desde phpMyAdmin

Hoy me ha surgido la necesidad de acceder a una página que tengo en uno de mis servidores, y no sabíamos la contraseña del único usuario que tenía de administración para su página hecha en wordpress. Esto ocurre en muchas ocasiones, puedes perder la contraseña del wordpress o incluso no acordarte del nombre de usuario de tu administrador en wordpress.

Como soy administrador del servidor donde está alojada la página, a lo que si tengo acceso es a la base de datos MySQL que usa dicho sistema WordPress y por tanto he pensado que no sería dificil crear un nuevo usuario administrador.

Para ello tras ojear la estructura de la base de datos, he visto que los administradores se guardan en una tabla llamada wp_users. Por tanto la primera idea ha sido: creo una nueva fila en la base de datos con los datos del nuevo admin y ya está.

* Primer problema: puedo añadir todos los datos, pero la contraseña está cifrada como es lógico por motivos de seguridad y no se que sistema de cifrado  habrán elegido. Haciendo una búsqueda rápida para ver como está cifrada veo en la documentación oficial que obtienen un hash MD5 de la contraseña introducida: https://codex.wordpress.org/Function_Reference/wp_hash_password

Por suerte phpMyAdmin permite hacer un cifrado directo, eligiendo la opción MD5 en el selector que te permite aplicar una función al campo que vas a introducir. Elegimos MD5 y añadimos la contraseña al campo «user_password». Cuidado porque aquí se muestra la contraseña conforme la escribes, no aparecen asteriscos como ocurre normalmente en un campo para introducir una contraseña.

Por tanto y resumiendo al crear una nueva fila para añadir un usuario llamado admin hay que añadir datos en los siguientes campos de la tabla wp_users

ID – no ponemos nada (es un campo autonumérico)

user_login – por ejemplo: admin

user_pass – seleccionar en el desplegable «Función» la opcion MD5 y poner el password deseado

user_nicename – admin

user_email – nuestro email para acceder al sistema

user_registered – aquí elegimos la fecha de hoy con el selector de fechas

user_status – ponemos 0

display_name – admin

Aquí os dejo una imagen con datos inventados de ejemplo para este paso:

Bien ahora debería poder loguearme en el sistema de administración de wordpress. Sin embargo… escribo el usuario y la contraseña y me sale un error diciendo «no tienes suficientes permisos para acceder a esta página»:

Vale. Pues intuyo que hay que tocar alguna tabla más. Así que volvemos a Google y buscando en inglés: wordpress admin permissions table

encuentro que hay que añadir dos filas más a otra tabla, que se llama wp_usermeta. Para ello necesitaremos el valor del campo ID que se creó antes en wp_users, el autonumérico que no rellenamos y que al insertar la fila habrá cogido un valor. Por ejemplo en mi caso el valor es 4.

En la tabla wp_usermeta hay que añadir 2 filas, con el id usuario que hayamos obtenido antes, para evitar copiar y pegar cada campo, lo podemos hacer dándole al botón SQL y poniendo esta consulta. MUY IMPORTANTE el valor que aparece aquí abajo como 4 debes cambiarlo por el que habrás cogido de la tabla wp_users en el campo ID.
INSERT INTO `wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, ‘4’, ‘wp_capabilities’, ‘a:1:{s:13:\»administrator\»;s:1:\»1\»;}’);

INSERT INTO `wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, ‘4’, ‘wp_user_level’, ’10’);

Ahora si, voy al directorio wp-admin y puedo entrar con el nuevo usuario creado.

Espero que te haya servido, y si es así, o si tienes cualquier duda, deja un comentario.

 

Registrado en Safe Creative

4 comentarios en «Crear un usuario administrador en WordPress desde phpMyAdmin»

  1. Me da este Error

    Parece haber un error en su consulta de SQL. La salida generada por el servidor de MySQL, de existir, aparece abajo, en cuyo caso puede ayudar a diagnosticar el problema.

    ERROR: Signo de puntuación desconocido @ 125
    STR: :\
    SQL: INSERT INTO `wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, ‘0’, ‘wp_capabilities’, ‘a:1:{s:13:\”administrator\”;INSERT INTO `wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, ‘0’, ‘wp_capabilities’, ‘a:1:{s:13:\”administrator\”;INSERT INTO `wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, ‘0’, ‘wp_capabilities’, ‘a:1:{s:13:\”administrator\”;INSERT INTO `wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, ‘0’, ‘wp_capabilities’, ‘a:1:{s:13:\”administrator\”;INSERT INTO `wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, ‘0’, ‘wp_capabilities’, ‘a:1:{s:13:\”administrator\”;

    consulta SQL:

    INSERT INTO `wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, ‘0’, ‘wp_capabilities’, ‘a:1:{s:13:\”administrator\”;

    MySQL ha dicho: Documentación
    #1064 –

    1. Hola Nicolás.

      No has copiado la frase completa.

      Esto has puesto tu: INSERT INTO `wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, ‘0’, ‘wp_capabilities’, ‘a:1:{s:13:\”administrator\”;

      Esto es lo que pone en mi entrada:

      INSERT INTO `wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, ‘4’, ‘wp_capabilities’, ‘a:1:{s:13:\»administrator\»;s:1:\»1\»;}’);

      INSERT INTO `wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, ‘4’, ‘wp_user_level’, ’10’);

      Si quieres copia la primera línea y luego la otra. Son 2 sentencias diferentes.

      Espero que lo resuelvas. Saludos.

    1. Hola. Si la web es la que aparece en este mensaje, tienes un problema con el certificado SSL. No se si tendrá algo que ver con tu problema.

      Si me explicas cual es el problema y si te ha surgido después de alguna acción concreta en tu web, quizás se me puede ocurrir que ha pasado.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *