Saltar al contenido principal

Cómo cambiar la contraseña de MySQL para los usuarios root y regulares

· 3 min de lectura
Customer Care Engineer

¿Olvidó la contraseña de root de MySQL? No se preocupe, le sucede incluso a los administradores experimentados. En este artículo, explicaremos cómo restablecer la contraseña de root de MySQL para diferentes versiones: MySQL 5.7 y MySQL 8.0+. Además, cubriremos cómo restablecer la contraseña de un usuario de base de datos regular.

Para MariaDB, consulte nuestra guía separada.

info

Root es el administrador principal de la base de datos. Tienen acceso completo a todos los datos y configuraciones. Si pierde esta contraseña, modificar ciertas configuraciones y ejecutar algunos comandos ya no será posible.

Todas las operaciones se realizarán a través de la línea de comandos vía SSH. Puede encontrar instrucciones más detalladas sobre cómo conectarse a su servidor utilizando este protocolo en este artículo.

Antes de continuar, verifique el contenido del archivo /root/.my.cnf. A menudo, contiene la contraseña de root actual para acceder a MySQL.

Puede probar la conexión usando el comando:

mysql -u root -p 

Luego, ingrese la contraseña del archivo .my.cnf.

Si la contraseña no funciona, siga las instrucciones a continuación.


Cómo restablecer la contraseña de root de MySQL

Paso 1: Detener MySQL

Para restablecer la contraseña, primero debe detener MySQL. Ingrese el siguiente comando:

  • Para Debian y Ubuntu:
systemctl stop mysql
  • Para CentOS/RockyLinux/AlmaLinux:
systemctl stop mysqld

Paso 2: Reiniciar el servidor en modo seguro

  • Para Debian y Ubuntu:

Asegúrese de que el directorio desde el cual se ejecutará MySQL exista y tenga el propietario adecuado:

mkdir -p /var/run/mysqld/ && chown -R mysql:mysql /var/run/mysqld/

 Inicie el servidor MySQL sin control de acceso:

mysqld_safe --skip-grant-tables --socket=/var/run/mysqld/mysqld.sock &

Si MySQL se inicia correctamente, verá un mensaje similar a:

2024-11-28T23:50:19.298141Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

Para continuar trabajando en la línea de comandos, presione "Ctrl + C".

  • Para CentOS/RockyLinux/AlmaLinux:
sudo -u mysql mysqld --skip-grant-tables --socket=/var/run/mysqld/mysqld.sock &

 Paso 3: Conectarse a MySQL

 mysql --socket=/var/run/mysqld/mysqld.sock

 Paso 4: Restablecer la contraseña

  • Para MySQL 5.7, ejecute los siguientes comandos secuencialmente:
FLUSH PRIVILEGES;

 Para un usuario local:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'NuevaContraseña';

Para un usuario de red (si existe):

ALTER USER 'root'@'%' IDENTIFIED BY 'NuevaContraseña';

Luego:

FLUSH PRIVILEGES;

Reemplace NuevaContraseña con su nueva contraseña deseada.

info

'usuario'@'localhost' se refiere a un usuario local que se conecta a través de socket o localhost. 'usuario'@'%' se refiere a un usuario de red con acceso desde cualquier dirección IP.

Puede establecer la misma o diferentes contraseñas para estos usuarios. Si el usuario de red no existe, el comando @'%' resultará en un error.

Salga de MySQL usando el comando exit o presionando "Ctrl + D".

  • Para MySQL 8.0+, ejecute los siguientes comandos:
FLUSH PRIVILEGES;

 Para un usuario local:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NuevaContraseña';

Para un usuario de red (si existe):

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'NuevaContraseña';

Luego:

FLUSH PRIVILEGES;

Reemplace NuevaContraseña con su nueva contraseña deseada.

Salga de MySQL usando el comando exit o presionando "Ctrl + D".

Paso 5: Reiniciar MySQL

Detenga MySQL:

mysqladmin shutdown --socket=/var/run/mysqld/mysqld.sock -p

Luego, ingrese la contraseña de root configurada previamente.

Inicie MySQL en modo normal:

  • Para Debian y Ubuntu:
systemctl start mysql
  • Para CentOS/RockyLinux/AlmaLinux:
systemctl start mysqld

 Cómo restablecer la contraseña para usuarios regulares

Si olvidó la contraseña de un usuario que no sea root, el enfoque es similar:

  1. Conéctese al servidor MySQL como root:
mysql -u root -p

 Ingrese su contraseña de root de MySQL.

  1. Ejecute el comando para cambiar la contraseña:
  • MySQL 5.7:

Para un usuario local:

ALTER USER 'nombredeusuario'@'localhost' IDENTIFIED BY 'NuevaContraseñaDeUsuario';

Para un usuario de red (si existe):

ALTER USER 'nombredeusuario'@'%' IDENTIFIED BY 'NuevaContraseñaDeUsuario';

Luego:

FLUSH PRIVILEGES;

Reemplace nombredeusuario con el nombre de usuario existente y NuevaContraseñaDeUsuario con la nueva contraseña deseada.

Salga de MySQL usando el comando exit o presionando "Ctrl + D".

  • MySQL 8.0+:

Para un usuario local:

ALTER USER 'nombredeusuario'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NuevaContraseña';

Para un usuario de red (si existe):

ALTER USER 'nombredeusuario'@'%' IDENTIFIED WITH mysql_native_password BY 'NuevaContraseña';

Reemplace nombredeusuario con el nombre de usuario existente y NuevaContraseñaDeUsuario con la nueva contraseña deseada.

Luego, salga de MySQL usando el comando exit o la combinación de teclas "Ctrl + D".

Si es necesario, puede listar todos los usuarios con la siguiente consulta:

SELECT User, Host FROM mysql.user;

 Cómo conectarse a MySQL localmente sin ingresar una contraseña

Para evitar ingresar la contraseña manualmente cada vez que se conecte a MySQL desde la línea de comandos en su servidor, puede guardarla en el archivo /root/.my.cnf. Abra el archivo en un editor de texto:

nano /root/.my.cnf

Agregue las siguientes líneas:

[client]

user = root
password = TuContraseñaRoot

Reemplace TuContraseñaRoot con su contraseña de root real.

Luego guarde el archivo usando la combinación de teclas "Ctrl + O" y salga del editor de texto con "Ctrl + X".

Por seguridad, establezca permisos más estrictos en el archivo .my.cnf:

chmod 600 /root/.my.cnf

Después de esta configuración, puede conectarse simplemente ejecutando el comando:

mysql -u root