Cómo cambiar la contraseña de MariaDB para usuarios root y normales
¿Olvidaste tu contraseña root de MariaDB? Sin ella, no podrás administrar usuarios, bases de datos ni realizar configuraciones críticas. En este artículo, aprenderás no solo a restablecer rápidamente la contraseña root de MariaDB, sino también a restablecer la contraseña de los usuarios normales.
Para MySQL, consulta nuestra guía por separado.
El usuario root es el administrador principal de la base de datos. Tienen acceso completo a todos los datos y configuraciones. Si pierdes esta contraseña, no podrás cambiar algunas configuraciones ni ejecutar comandos.
Todas las operaciones se realizarán a través de la línea de comandos vía SSH. Puedes encontrar instrucciones detalladas sobre cómo conectarte a tu servidor usando SSH en este artículo.
Antes de continuar, verifica el contenido del archivo /root/.my.cnf. A menudo, contiene la contraseña actual de root para acceder a MariaDB.
Para probar la conexión, usa el comando:
mysql -u root -p
Luego, ingresa la contraseña del archivo .my.cnf
Si la contraseña no funciona, sigue las instrucciones a continuación
Restablecimiento de la contraseña
En la mayoría de los comandos a continuación, se usará el comando mysql en lugar de mariadb para interactuar con el servidor MariaDB. Esto se debe a que, en algunos sistemas operativos, como las distribuciones basadas en RHEL (RockyLinux, AlmaLinux, etc.), el comando mariadb no está disponible. En su lugar, se utiliza el comando mysql para compatibilidad con MySQL.
El uso del comando mysql proporciona compatibilidad universal independientemente de la distribución o implementación del servidor.
Paso 1: Detener MariaDB
Para restablecer la contraseña, primero detén el servidor MariaDB. Introduce el siguiente comando:
systemctl stop mariadb
Paso 2: Reinicia el servidor en modo seguro
- Para Debian y Ubuntu:
Asegúrate de que el directorio desde el que se ejecutará MariaDB existe y tiene el propietario correcto:
mkdir -p /var/run/mysqld/ && chown -R mysql: /var/run/mysqld/
Inicia el servidor MariaDB sin control de acceso:
mysqld_safe --skip-grant-tables --socket=/var/run/mysqld/mysqld.sock &
Si el servidor MariaDB se inicia correctamente, verás un mensaje similar a este:
2024-11-28T23:50:19.298141Z mysqld_safe Starting mariadb daemon with databases from /var/lib/mysql
Para seguir trabajando en la línea de comandos, presiona "Ctrl + C"
- Para CentOS/RockyLinux/AlmaLinux:
Inicia el servidor MariaDB sin control de acceso:
mysqld_safe --skip-grant-tables --socket=/var/lib/mysql/mysql.sock &
Para seguir trabajando en la línea de comandos, presiona "Ctrl + C".
Paso 3: Conectarse a MariaDB
- Para Debian y Ubuntu:
mysql --socket=/var/run/mysqld/mysqld.sock
- Para CentOS/RockyLinux/AlmaLinux:
mysql --socket=/var/lib/mysql/mysql.sock
Paso 4: Restablece la contraseña
Ejecuta los siguientes comandos secuencialmente:
FLUSH PRIVILEGES;
Para un usuario local:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NuevaContrasena';
Para un usuario de red (si existe):
ALTER USER 'root'@'%' IDENTIFIED BY 'NuevaContrasena';
Luego:
FLUSH PRIVILEGES;
Reemplaza NuevaContrasena con tu nueva contraseña deseada.
'usuario'@'localhost' — se refiere a un usuario local que se conecta por socket o localhost. 'usuario'@'%' se refiere a un usuario de red con acceso desde cualquier dirección IP.
Puedes establecer la misma contraseña o contraseñas diferentes para estos usuarios. Si el usuario de red no existe, el comando @'%' resultará en un error.
Sal de MariaDB usando el comando exit o presionando "Ctrl + D"
Paso 5: Reiniciar MariaDB
Detén el servidor MariaDB:
- Para Debian y Ubuntu:
mysqladmin shutdown --socket=/var/run/mysqld/mysqld.sock -p
Luego, ingresa la contraseña de root previamente establecida.
- Para CentOS/RockyLinux/AlmaLinux:
mysqladmin shutdown --socket=/var/lib/mysql/mysql.sock -p
Luego, ingresa la contraseña de root previamente establecida.
Inicia MariaDB en modo normal:
systemctl start mariadb
Cómo restablecer la contraseña de usuarios normales
Si olvidas la contraseña de un usuario que no sea root, el enfoque es similar:
- Conéctate al servidor MariaDB como root:
mysql -u root -p
Ingresa tu contraseña de root de MariaDB
- Ejecuta el comando para cambiar la contraseña:
Para un usuario local:
ALTER USER 'nombredeusuario'@'localhost' IDENTIFIED BY 'NuevaContrasenaUsuario';
Para un usuario de red (si existe):
ALTER USER 'nombredeusuario'@'%' IDENTIFIED BY 'NuevaContrasenaUsuario';
Luego:
FLUSH PRIVILEGES;
Reemplaza nombredeusuario con el nombre de usuario real y NuevaContrasenaUsuario con tu nueva contraseña deseada.
Sal de MariaDB usando el comando exit o presionando "Ctrl + D".
Si es necesario, puedes listar todos los usuarios con la siguiente consulta:
SELECT User, Host FROM mysql.user;
Cómo conectarse a MariaDB localmente sin ingresar una contraseña
Para evitar ingresar la contraseña manualmente cada vez que te conectas a MariaDB desde la línea de comandos en tu servidor, puedes guardarla en el archivo /root/.my.cnf. Abre el archivo en un editor de texto:
nano /root/.my.cnf
Agrega las siguientes líneas:
[client]
user = root
password = TuContrasenaRoot
Reemplaza TuContrasenaRoot con tu contraseña de root real.
Guarda el archivo presionando Ctrl + O, luego sal del editor de texto con Ctrl + X
Por motivos de seguridad, establece permisos más restrictivos en el archivo .my.cnf:
chmod 600 /root/.my.cnf
Después de esto, puedes conectarte simplemente ejecutando el comando:
mysql -u root