Problema: Cambiar la contraseña de root de MySQL en Linux
Actualizar la contraseña de root de MySQL en un sistema Linux es importante para la seguridad de la base de datos. Los administradores pueden necesitar cambiar esta contraseña para seguir las mejores prácticas de seguridad o responder a posibles problemas de seguridad. El proceso puede ser complejo para aquellos que no están familiarizados con la interfaz de línea de comandos de MySQL o la administración de sistemas Linux.
Métodos para cambiar la contraseña de root de MySQL
Método 1: Usando la línea de comandos de MySQL
Para cambiar la contraseña de root de MySQL usando la línea de comandos:
-
Inicie MySQL en modo seguro:
- Detenga el servicio MySQL:
sudo systemctl stop mysql - Inicie MySQL sin verificación de permisos:
sudo mysqld_safe --skip-grant-tables &
- Detenga el servicio MySQL:
-
Restablezca la contraseña de root:
- Conéctese a MySQL:
mysql -u root - Seleccione la base de datos MySQL:
USE mysql; - Actualice la contraseña de root:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'nueva_contraseña'; - Actualice los privilegios:
FLUSH PRIVILEGES; - Salga de MySQL:
EXIT;
- Conéctese a MySQL:
-
Reinicie el servicio MySQL:
- Detenga la instancia en modo seguro:
sudo killall mysqld - Inicie MySQL normalmente:
sudo systemctl start mysql
- Detenga la instancia en modo seguro:
Método 2: Modificando el archivo de configuración de MySQL
Para cambiar la contraseña de root editando la configuración de MySQL:
-
Localice y edite el archivo my.cnf:
- Encuentre el archivo:
sudo find /etc -name my.cnf - Edite el archivo:
sudo nano /etc/mysql/my.cnf
- Encuentre el archivo:
-
Añada la opción skip-grant-tables:
- Bajo la sección [mysqld], añada:
skip-grant-tables
- Bajo la sección [mysqld], añada:
-
Reinicie MySQL y actualice la contraseña:
- Reinicie MySQL:
sudo systemctl restart mysql - Conéctese a MySQL:
mysql -u root - Actualice la contraseña:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'nueva_contraseña'; - Actualice los privilegios:
FLUSH PRIVILEGES; - Elimine la opción skip-grant-tables de my.cnf
- Reinicie MySQL de nuevo:
sudo systemctl restart mysql
- Reinicie MySQL:
Método 3: Usando la herramienta mysqladmin
La herramienta mysqladmin ofrece una forma sencilla de cambiar la contraseña de root de MySQL:
-
Sintaxis para cambiar la contraseña con mysqladmin:
mysqladmin -u root -p'contraseña_antigua' password 'nueva_contraseña' -
Ejemplos de uso del comando mysqladmin:
- Cambiar la contraseña cuando se conoce la contraseña actual:
mysqladmin -u root -p'contraseña_actual' password 'nueva_contraseña' - Cambiar la contraseña sin la contraseña actual (si no está establecida):
mysqladmin -u root password 'nueva_contraseña'
- Cambiar la contraseña cuando se conoce la contraseña actual:
Reemplace 'contraseña_antigua', 'contraseña_actual' y 'nueva_contraseña' con sus contraseñas reales.
Verificando la nueva contraseña de root de MySQL
Después de cambiar la contraseña de root de MySQL, debe comprobar si la nueva contraseña funciona. Así es como puede hacerlo:
Iniciando sesión con la nueva contraseña:
- Abra su terminal o línea de comandos.
- Use este comando para iniciar sesión en MySQL:
mysql -u root -p - Ingrese su nueva contraseña cuando se le solicite.
- Si inicia sesión, verá el prompt de MySQL.
Probando el acceso a la base de datos:
- Una vez que haya iniciado sesión, intente acceder a una base de datos:
SHOW DATABASES; - Este comando debería mostrar una lista de bases de datos.
- Intente crear una nueva base de datos:
CREATE DATABASE test_db; - Si funciona, verá un mensaje que confirma la creación de la base de datos.
- Luego puede eliminar la base de datos de prueba:
DROP DATABASE test_db;
Si puede realizar estas acciones sin errores, significa que su nueva contraseña de root funciona y puede administrar su servidor MySQL.
Solución de problemas comunes
Contraseña de root olvidada
Si ha olvidado su contraseña de root de MySQL, puede restablecerla siguiendo estos pasos:
-
Detenga el servicio MySQL:
sudo systemctl stop mysql -
Inicie MySQL en modo seguro:
sudo mysqld_safe --skip-grant-tables & -
Conéctese a MySQL sin contraseña:
mysql -u root -
Seleccione la base de datos MySQL:
USE mysql; -
Restablezca la contraseña de root:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'nueva_contraseña'; -
Aplique los cambios:
FLUSH PRIVILEGES; -
Salga de MySQL:
EXIT; -
Detenga la instancia en modo seguro:
sudo killall mysqld -
Reinicie MySQL:
sudo systemctl start mysql
Reemplace 'nueva_contraseña' con su nueva contraseña.
Errores de permiso denegado
Si obtiene errores de permiso denegado después de cambiar su contraseña, pruebe estas soluciones:
-
Verifique los privilegios de su usuario MySQL:
- Inicie sesión en MySQL como root
- Ejecute:
SHOW GRANTS FOR 'su_nombre_de_usuario'@'localhost'; - Asegúrese de tener los permisos necesarios
-
Actualice los privilegios de usuario si es necesario:
- Use:
GRANT ALL PRIVILEGES ON *.* TO 'su_nombre_de_usuario'@'localhost'; - Luego:
FLUSH PRIVILEGES;
- Use:
-
Revise el archivo de configuración de MySQL:
- Mire en /etc/mysql/my.cnf o /etc/my.cnf
- Asegúrese de que no haya configuraciones en conflicto
-
Reinicie el servicio MySQL:
sudo systemctl restart mysql -
Verifique los permisos de archivos del sistema:
- Verifique que los permisos del directorio de datos de MySQL sean correctos
- Normalmente:
chown -R mysql:mysql /var/lib/mysql
Si los problemas continúan, revise los registros de errores de MySQL para obtener más información.





