GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo cambiar/restablecer la contraseña raíz de MySQL o MariaDB

Recientemente, cambié la contraseña de usuario root de MySQL de mi sitio web. Entonces pensé ¿qué pasará si olvido la contraseña de root de MySQL?

¿Hay alguna manera fácil de restablecer la contraseña raíz de MySQL o MariaDB?

Revisé algunos tutoriales en línea, pero ninguno de ellos parece ser lo suficientemente completo como para diferenciar entre cambiar la contraseña y restablecerla. Parecían carecer de los detalles sobre la tabla MySQL donde se almacenan las contraseñas de los usuarios y en qué columnas.

En este tutorial, aprenderemos los siguientes temas.

  1. Cómo cambiar la contraseña raíz de MySQL/MariaDB
  2. Cómo restablecer la contraseña raíz de MySQL/MariaDB

Intentaré hacerlo lo más completo posible y, con suerte, después de leer esto, podrá completar esta tarea fácilmente sin necesidad de más ayuda.

¿Cuál es la diferencia entre cambiar y restablecer la contraseña?

Si conoce la contraseña de root, puede conectarse a la base de datos como usuario root y luego cambiar la contraseña muy fácilmente. Puede cambiar la contraseña de root, así como cualquier otra contraseña de usuario.

Si ha olvidado la contraseña de root, significa que no puede conectarse al servidor MySQL como usuario root. El usuario raíz tiene los privilegios más altos y no puede cambiar su contraseña a través de otras cuentas. Tenemos que realizar algunos pasos adicionales en este caso para restablecer la contraseña de root de MySQL.

¿Los pasos para MySQL y MariaDB son los mismos?

MariaDB está construido sobre MySQL. Es muy popular para los requisitos de alojamiento web. De hecho, JournalDev y todos mis sitios web utilizan la base de datos MariaDB. Cualquier comando que funcione para MySQL también funcionará para MariaDB.

El único ajuste en los comandos que podría tener que hacer es detener e iniciar el servidor MySQL. Estoy usando Ubuntu para este tutorial y uso systemctl para iniciar/detener servicios. También puede usar /etc/init.d/mysql para realizar las mismas operaciones.

Si tiene el sistema operativo Windows, utilice mysqld o mysqladmin desde el símbolo del sistema para iniciar o detener el servidor MySQL. Se encuentran en la carpeta bin de instalación de MySQL.

Cómo cambiar la contraseña raíz de MySQL o MariaDB

Estoy usando la base de datos MariaDB, podemos usar la opción –version para averiguar su versión.

# mariadb --version
mariadb  Ver 15.1 Distrib 10.1.44-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
# 

1. Conéctese a MySQL como usuario root

# mysql -uroot -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

2. Cambie la contraseña y el valor de la cadena de autenticación en la tabla mysql.user

Las contraseñas de los usuarios de MySQL se almacenan en las columnas contraseña y cadena de autenticación de la tabla mysql.user en forma cifrada. Podemos usar la función PASSWORD() para convertir una cadena de texto sin formato en el valor cifrado y configurar estas columnas.

MariaDB [(none)]> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> select password, authentication_string from user where User = 'root' AND Host = 'localhost';
+-------------------------------------------+-------------------------------------------+
| password                                  | authentication_string                     |
+-------------------------------------------+-------------------------------------------+
| *E510A8BC6807F8BF4913D893620792C432FCBA5B | *E510A8BC6807F8BF4913D893620792C432FCBA5B |
+-------------------------------------------+-------------------------------------------+
1 row in set (0.00 sec)

MariaDB [mysql]> UPDATE user SET authentication_string = PASSWORD('qwerty2021') WHERE User = 'root' AND Host = 'localhost';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> UPDATE user SET password = PASSWORD('qwerty2021') WHERE User = 'root' AND Host = 'localhost';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> select password, authentication_string from user where User = 'root' AND Host = 'localhost';
+-------------------------------------------+-------------------------------------------+
| password                                  | authentication_string                     |
+-------------------------------------------+-------------------------------------------+
| *6F168491676C70E51CB8D0F14D6B581D1322A77A | *6F168491676C70E51CB8D0F14D6B581D1322A77A |
+-------------------------------------------+-------------------------------------------+
1 row in set (0.00 sec)

MariaDB [mysql]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> exit
Bye
root@localhost:~# 

Entendamos lo que está sucediendo en las consultas anteriores.

  • En primer lugar, estamos cambiando la base de datos a 'mysql'
  • Luego, estamos configurando los valores de las columnas 'authentication_string' y 'password' para el usuario 'root'@'localhost' con la nueva contraseña.
  • Luego estamos recargando las tablas de concesión utilizando el comando FLUSH PRIVILEGES.
  • Luego salga de la sesión de MySQL. La contraseña de root se ha cambiado correctamente.

NOTA :Traté de usar ALTER USER comando para cambiar la contraseña de root, pero no funcionó.

MariaDB [mysql]> ALTER USER root@localhost IDENTIFIED BY 'qwerty2022';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'USER root@localhost IDENTIFIED BY 'qwerty2022'' at line 1
MariaDB [mysql]>

3. Verifique el inicio de sesión del usuario raíz usando una nueva contraseña

# mysql -uroot -pqwerty2021
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Eso es todo. Hemos cambiado con éxito la contraseña de usuario de MySQL/MariaDB.

Cómo restablecer la contraseña raíz de MySQL/MariaDB

Si ha olvidado la contraseña de root, debemos realizar un paso adicional para poder iniciar sesión en el terminal MySQL sin proporcionar la contraseña.

1. Detenga el servidor MySQL

# systemctl stop mysql

También puede ejecutar systemctl stop mariadb , el efecto será el mismo.

2. Inicio del servidor MySQL sin la configuración de comprobación de permisos

La idea es iniciar el servidor MySQL sin cargar la información de las tablas de concesión, de modo que podamos iniciar sesión como usuario raíz sin proporcionar una contraseña.

Es un riesgo para la seguridad ejecutar un servidor MySQL de esta manera, por lo que debe hacerse brevemente y apagarse inmediatamente después de restablecer la contraseña de root.

Podemos iniciar el servidor MySQL en modo seguro y pasar –skip-grant-tables opción para omitir la carga de tablas de concesión que almacenan la configuración de privilegios de usuario.

# sudo mysqld_safe --skip-grant-tables --skip-networking &
[1] 11734
root@localhost:~# 200427 20:05:40 mysqld_safe Logging to syslog.
200427 20:05:40 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
#

Es importante ejecutar el comando que termina en ¶ que se ejecute en segundo plano. También estoy pasando –skip-networking opción para omitir la red que impide que otros clientes se conecten al servidor MySQL.

3. Conéctese al servidor MySQL como root sin pasar la contraseña

# mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

Tenga en cuenta que no proporcionamos la contraseña de root, pero aun así podemos conectarnos al servidor MySQL.

4. Restablecer la contraseña de root en la tabla mysql.user

MariaDB [(none)]> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> UPDATE user SET authentication_string = PASSWORD('qwerty2022') WHERE User = 'root' AND Host = 'localhost';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> UPDATE user SET password = PASSWORD('qwerty2022') WHERE User = 'root' AND Host = 'localhost';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> exit
Bye
# 

5. Detener e iniciar el servidor MySQL

En primer lugar, eliminaremos el servidor MySQL en ejecución. El PID está presente en /var/run/mysqld/mysqld.pid archivo.

# cat /var/run/mysqld/mysqld.pid
11891
# sudo kill 11891
# 

Ahora, inicie el servidor MySQL en el modo normal.

# systemctl start mysql

6. Verifique iniciando sesión como usuario raíz con una nueva contraseña

# mysql -uroot -pqwerty2022
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

Si intenta iniciar sesión como root sin contraseña, arrojará el error "Acceso denegado".

# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
# mysql -uroot
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
# 

Conclusión

El usuario root de MySQL es como cualquier otro usuario. Sin embargo, cambiar o restablecer su contraseña es un poco complicado porque es el superusuario y no podemos cambiar la contraseña de root desde el inicio de sesión de otro usuario.


Linux
  1. Cómo restablecer su contraseña raíz de MySQL en CentOS 6

  2. Cómo restablecer la contraseña raíz de MySql

  3. Cómo restablecer la contraseña raíz de MySQL o MariaDB

  4. ¿Cómo restablecer la contraseña de root de MySQL?

  5. Restablecer una contraseña raíz de MySQL

Cómo restablecer la contraseña de usuario raíz de MySQL en Linux

Cómo cambiar o restablecer la contraseña raíz olvidada en RHEL 8

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

Cómo cambiar la contraseña de root en Linux

¿Cómo restablecer la contraseña de root de MySQL 8.0 en Centos 7.x?

Cómo restablecer la contraseña raíz en CentOS/RHEL 8