El acceso a las bases de datos es una tarea clave para la administración de servidores y el mantenimiento de aplicaciones web.
MySQL es uno de los sistemas de gestión de bases de datos (DBMS) más comunes y potentes. Como administrador de bases de datos, gestionas información crítica, y la contraseña root de MySQL desempeña un papel crucial para garantizar la seguridad e integridad de estos datos.
En ocasiones, puedes perder u olvidar la contraseña root de MySQL. Esto puede ocurrir por diversas razones, desde circunstancias imprevistas hasta cambios en el equipo o simples errores humanos. En estos casos, es fundamental saber cómo restablecer la contraseña root y recuperar el acceso a la base de datos.
En este artículo, presentaremos métodos y herramientas para ayudarte a restablecer la contraseña root de MySQL y recuperar el control total sobre tu base de datos. Cubriremos distintos enfoques, desde el uso de herramientas oficiales de MySQL como mysqladmin y mysqld_safe hasta la edición de archivos de configuración y la realización de cambios en el sistema.
También analizaremos precauciones importantes para ayudarte a proteger tu base de datos y evitar que la contraseña root se pierda en el futuro. Entre ellas se incluyen el uso de contraseñas seguras, la limitación del acceso a la base de datos solo a los usuarios necesarios y la realización de copias de seguridad periódicas para minimizar riesgos.
Por lo tanto, si necesitas restablecer la contraseña root de MySQL, a continuación encontrarás instrucciones detalladas y recomendaciones que te ayudarán a recuperar el acceso y reanudar la administración de tu base de datos MySQL.
MySQL no utiliza PAM y la contraseña SSH no funcionará. La contraseña root se establece durante la instalación del servidor de bases de datos en la etapa de creación de las tablas de privilegios.
Si después de intentar iniciar sesión recibes el error ERROR 1045: Access denied for user 'root'@'localhost' en lugar de un mensaje de bienvenida, necesitas restablecer la contraseña root.
Para restablecer la contraseña root en MySQL 8, debes seguir un procedimiento sencillo. Este método es igualmente adecuado para MySQL y MariaDB, ya que son totalmente compatibles y utilizan los mismos comandos.
En Ubuntu, puedes restablecer la contraseña root de MySQL utilizando los mismos métodos que en Debian. Puede haber una ligera diferencia en CentOS 7, que indicaremos en la sección correspondiente más abajo.
Si también estás limpiando cuentas de usuario, consulta How to Properly Delete a MySQL User, donde se explica cómo comprobar y revocar permisos, y cómo usar el comando DROP USER, lo que te ayudará a eliminar accesos innecesarios una vez restaurados los privilegios de root.
Este es un método bastante común debido a su simplicidad. A continuación se muestra un plan paso a paso para esta operación:
service mysqld stop
mysqld --skip-grant-tables&
El ampersand al final permite ejecutar el servicio en segundo plano, de modo que no ocupe una ventana de terminal independiente.
Como las tablas de privilegios no están cargadas, no es necesario introducir una contraseña:
mysql -u root
Cada comando enviado a la base de datos debe terminar con un punto y coma. Si la consulta no se completa, MySQL esperará a que continúe el comando. Puedes simplemente añadir un punto y coma si se omitió en la nueva línea.
FLUSH PRIVILEGES;
La respuesta debería ser: Query OK, 0 rows affected.
Para establecer una nueva contraseña root en MySQL, en Ubuntu y Debian utiliza:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'PASSWORD';
Si esta consulta no funciona, prueba:
UPDATE `mysql`.`user` SET `password`=password('PASSWORD') WHERE `user`='root';
O bien:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('PASSWORD');
En CentOS 7, puedes restablecer la contraseña root de MySQL con el comando:
UPDATE `mysql`.`user` SET `authentication_string`=password('PASSWORD') WHERE `user`='root';
Verás la respuesta: Query OK, 0 rows affected si se ejecuta correctamente.
La contraseña incluso puede ser un valor vacío, pero en ese caso perderás la capacidad de conectarte al servidor por cualquier otro medio que no sea la línea de comandos. El cambio de contraseña se aplica inmediatamente después de ejecutar el comando. Puedes comprobarlo, por ejemplo, conectándote a través de phpMyAdmin si no se estableció un valor vacío.
quit;
La respuesta debería ser Bye, y volverás al terminal normal.
service mysqld start
Restablecer la contraseña del superusuario de MySQL en Windows es similar al procedimiento para restablecer la contraseña root en sistemas Linux. Las diferencias pueden encontrarse principalmente en el proceso de localización e inicio del propio servicio de base de datos.
A continuación se muestra una guía paso a paso para restablecer la contraseña del superusuario de la base de datos en Windows.
Existe una diferencia según la base de datos instalada. Para comprobarlo, ejecuta:
Para MySQL:
sc qc "mysql"
Para MariaDB:
sc qc "mariadb"
Si la base de datos no está instalada, verás un mensaje indicando que el servicio no existe. De lo contrario, verás información básica sobre MySQL o MariaDB.
Si la variable %PATH% no está configurada, ve a la carpeta que contiene el archivo ejecutable del servicio de base de datos. Puedes encontrar la ruta en la salida del comando sc qc, en "BINARY_PATH_NAME". En nuestro caso, es C:\localhost\mariadb\bin\.
cd C:\localhost\mariadb\bin\
Para MySQL:
net stop mysql
Para MariaDB:
net stop mariadb
Utiliza el comando start. A diferencia de Linux, en Windows el ampersand al final del comando no funciona y, cuando el servicio se inicia, no permitirá ejecutar más comandos hasta que finalice la sesión (CTRL+C).
Puedes utilizar el mismo comando tanto para MySQL como para MariaDB.
mysqld --skip-grant-tables
mysql -u root -p
Introduce la contraseña en blanco y verás el mensaje de bienvenida estándar. Ahora debes introducir los comandos para el servidor de bases de datos.
FLUSH PRIVILEGES;
Sin este comando inicial, puedes recibir un error al cambiar la contraseña: "ERROR 1290: The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement."
ALTER USER 'root'@'localhost' IDENTIFIED BY 'PASSWORD';
Nota: Si el comando no funciona, prueba las opciones del Paso 5 de las instrucciones para sistemas Linux.
Cierra la ventana del símbolo del sistema con la versión temporal de la base de datos en ejecución o pulsa CTRL+C.
Para MySQL:
net start mysql
Para MariaDB:
net start mariadb
Restablecer la contraseña root de MySQL es una habilidad importante para los administradores de bases de datos. En este artículo, hemos revisado varios métodos y herramientas para restablecer la contraseña root y recuperar el control total sobre tu base de datos MySQL administrada.
En conclusión, a continuación se presentan algunos puntos clave sobre la seguridad de bases de datos:
Utiliza contraseñas complejas que combinen letras, números y caracteres especiales, y cámbialas periódicamente.
Limita el acceso a la base de datos solo a los usuarios esenciales para minimizar el riesgo de accesos no autorizados.
Actualiza el sistema MySQL con regularidad para eliminar vulnerabilidades conocidas y recibir los parches de seguridad más recientes.
Realiza copias de seguridad periódicas de la base de datos. Esta es tu garantía en caso de pérdida de datos o fallos del sistema. Desarrolla una estrategia de copias de seguridad, determina la frecuencia y los métodos de creación de backups, y comprueba su capacidad de recuperación para garantizar la restauración de los datos.
Recuerda la importancia de la formación y el desarrollo continuo en la gestión de bases de datos. Mantente informado sobre las últimas tendencias, nuevas funciones y herramientas de MySQL. Utiliza recursos educativos, asiste a seminarios y conferencias, y comunícate con profesionales con experiencia en este campo. Actualizar constantemente tus conocimientos y habilidades te ayudará a gestionar la base de datos de forma eficaz y a resolver problemas emergentes.
Restablecer la contraseña root de MySQL es una tarea crítica que requiere atención y conocimientos. Sin embargo, con los métodos y recomendaciones estudiados, puedes llevar a cabo esta tarea y recuperar el control completo sobre tu base de datos MySQL. Recuerda garantizar la seguridad, crear copias de seguridad y continuar aprendiendo, y tu trabajo con MySQL será exitoso y seguro.