Cómo cambiar la contraseña WordPress desde la consola MySQL

En Tutoriales y Guías, Webmasters por

En muchas ocasiones no tenemos un programa para gestionar las bases de datos de forma interactiva como Adminer o phpMyAdmin. Si nos surge la necesidad de restaurar la contraseña WordPress porque la hemos olvidado y sólo tenemos abierta una sesión en la terminal, podemos cambiar la contraseña WordPress fácilmente.

Cómo cambiar la contraseña WordPress desde la consola MySQL

Este método lo uso con bastante frecuencia en entornos de desarrollo locales, en los que no tengo un servidor de correo SMTP instalado y no puedo usar la propia función de recuperar la contraseña a través de un email que incluye WordPress.

Cómo cambiar la contraseña WordPress desde la consola MySQL.

Para llevar a cabo este tutorial, necesitaremos una sesión de consola abierta y las credenciales para acceder a la base de datos MySQL o MariaDB, que serían: el nombre de usuario, contraseña y el host (por defecto se omite si es localhost).

El proceso lo realizaremos en tres pasos:

  • Crear el hash de nuestra nueva contraseña.
  • Conectar a la base de datos WordPress.
  • Reemplazar el hash de la contraseña antigua con el hash de la nueva.

Como crear un hash de una contraseña WordPress.

WordPress ha usado desde sus inicios el algoritmo MD5 para almacenar la contraseña en la base de datos, pero como se considera un algoritmo inseguro, en el año 2007 WordPress adoptó phpass (portable PHP password hashing framework).

Imaginemos que nuestra contraseña es «vozidea» (sin las comillas), entonces si empleamos los algoritmos anteriores obtendríamos:

  • MD5: 8bfe929f64006000e190bbe385b6e93a
  • Phpass: $P$BzJMa8sfzhikh/nmodBIN3yPPhkw.u1

A la hora de modificar el hash de la contraseña directamente en la base de datos WordPress, ambos tipos de hashes servirían, ya que WordPress mantiene la compatibilidad con ambos. De hecho, nosotros usaremos el algoritmo MD5 para restaurar la contraseña desde la terminal, ya que WordPress se encargará de cambiar automáticamente al algoritmo phpass cuando nos identifiquemos por primera vez.

Usaremos el algoritmo MD5 para generar nuestra contraseña, ya que desde una terminal Linux podemos generar estos hashes de forma muy sencilla con el comando echo -n vozidea | md5sum.

md5 hash terminal linux

Ahora que ya tenemos el hash correspondiente a nuestra nueva contraseña, accederemos a la base de datos WordPress.

Conectando a la base de datos WordPress desde la consola Linux.

Con nuestra sesión de terminal abierta, ejecutamos el comando mysql -u root -p e introducimos la contraseña. En otra ocasión, ya publicamos un tutorial con instrucciones de cómo acceder a MariaDB o MySQL desde la consola Linux, que te recomiendo tener a mano.

acceso mysql consola

Una vez autentificados, ejecutaremos la consulta SHOW databases; que nos mostrará todas las bases de datos a las que tiene acceso el usuario autenticado. Para seleccionar la base de datos de WordPress, ejecutaremos la consulta USE nombre_db_wordpress;.

Ahora podemos listar todas las tablas de la base de datos con la con la consulta SHOW tables; y tendremos que identificar la tabla donde se almacenan los usuarios de WordPress, que generalmente tiene un nombre similar a wp_users. Este es el nombre de la tabla en una instalación de WordPress por defecto, ya que esta establece wp_ como prefijo de las tablas.

Reemplazar el hash de la contraseña antigua con el hash de la nueva.

Para obtener una lista con todos los usuarios y su ID (identificador), ejecutamos la consulta:
SELECT ID, user_login, user_pass FROM wp_users;

consultar usuarios wordpress consola

Con la anterior consulta, ya sabemos el ID del usuario al que queremos cambiar la contraseña. Vamos a suponer que su ID es el número 2, entonces la consulta que realizamos sería:
UPDATE wp_users SET user_pass= "8bfe929f64006000e190bbe385b6e93a" WHERE ID = 2;

Si tenemos una versión de MySQL o MariaDB reciente (versión mayor o igual a 5.x), podemos calcular el hash MD5 directamente en la consulta, evitando así el primer paso donde calculábamos el hash MD5 de nuestra contraseña. Si nuestra contraseña fuese «vozidea» (sin comillas), la consulta sería:
UPDATE wp_users SET user_pass= MD5('vozidea') WHERE ID = 2;

Y esto es todo, ahora ya podemos acceder a WordPress con el nombre de usuario y la nueva contraseña.