En ocasiones nos hemos encontrado con la necesidad de crear un usuario administrador de WordPress desde phpMyAdmin por distintos motivos, como por ejemplo un borrado accidental o haber sufrido un bloqueo por parte de Wordfence, por poner sólo un par de ellos.

Aunque el problema que se genera cuando es imposible acceder con un usuario administrador al Panel de Administración de WordPress es muy importante, la solución a este problema es realmente sencilla.

Solución

Para crear un nuevo usuario administrador desde SQL necesitamos insertar tres registros en dos tablas de la base de datos de WordPress. El primer registro, obviamente, es el propio usuario, y se debe crear en la tabla wp_users, los dos siguientes registros se deben crear en la tabla wp_usermeta y en ellos vamos a especificar los permisos del nuevo usuario.

Veamos el código SQL necesario para crear un nuevo usuario administrador:


-- Creamos el nuevo usuario
INSERT INTO `nombre_de_la_base_de_datos`.`wp_users` (`ID`, `user_login`, `user_pass`, `user_nicename`, `user_email`, `user_url`, `user_registered`, `user_activation_key`, `user_status`, `display_name`) VALUES ('5', 'usuario', MD5('contraseña'), 'Nombre de usuario', 'info@nombrededominio.ext', 'http://www.nombrededominio.ext/', '2015-06-12 00:00:00', '', '0', 'Nombre a mostrar');

-- Añadimos los permisos de administrador para ese usuario
INSERT INTO `nombre_de_la_base_de_datos`.`wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, '5', 'wp_capabilities', 'a:1:{s:13:"administrator";s:1:"1";}');
INSERT INTO `nombre_de_la_base_de_datos`.`wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, '5', 'wp_user_level', '10');

Es muy importante utilizar el mismo valor en los campos ID y user_id.

Presuponemos que tienes suficientes conocimientos de SQL como para no tener que explicarte en detalle ninguna de las líneas, pero debes tener en cuenta que tienes que sustituir el valor nombre_de_la_base_de_datos por el nombre de tu propia base de datos en los tres insert, y que sólo tienes que modificar los valores (values) contenidos en el primer insert del código publicado encima de este párrafo.

En los valores del primer insert hay que poner especial cuidado en el nombre de usuario, la contraseña y la fecha de creación, que lógicamente tiene que utilizar el formato de fecha estándar de SQL, esto es yyyy-mm-dd (aaaa-mm-dd). Los otros datos: Nombre de usuario, correo electrónico, URL y el nombre a mostrar, se pueden modificar posteriormente, una vez que accedamos al Panel de Administración, por lo que en caso de error se puede solucionar fácilmente.

Recuerda que no debes modificar los valores contenidos en los dos últimos insert.

Gracias a estas pequeñas líneas de código SQL nos vamos a asegurar una solución de emergencia que nos a va sacar de más de un apuro en el futuro.

Como siempre quedamos a la espera de vuestros comentarios y aportaciones.