GNU/Linux >> Tutoriales Linux >  >> Linux

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

¿Ha olvidado su contraseña de usuario raíz de MySQL? ¡No hay problema! Esta guía lo guía a través de los pasos para restablecer la contraseña de usuario raíz de MySQL en los sistemas operativos Linux. Los pasos que se indican a continuación también deberían funcionar para restablecer la contraseña raíz de MariaDB.

Ya publicamos una guía para restablecer la contraseña de usuario root (administrativo) en MySQL versiones anteriores, es decir, MySQL 5.7. Pero ese método no funcionó con la nueva versión de MySQL 8. Si desea restablecer la contraseña de root en MySQL 8, siga cualquiera de las dos soluciones que se indican a continuación.

Restablecer la contraseña de usuario raíz de MySQL en Linux

Como ya mencioné, podemos restablecer la contraseña de root de MySQL de dos maneras.

  • La forma genérica,
  •  Usando init_file variable del sistema.

1. La forma genérica de restablecer la contraseña de root de MySQL

Este método funcionará independientemente del sistema operativo que utilice. Te advierto que es un menos seguro manera, porque vamos a iniciar el servidor MySQL con --skip-grant-tables opción. Esto le da a cualquier persona con acceso al servidor acceso sin restricciones a todas las bases de datos .

Primero, detenga el servicio MySQL usando el comando:

$ sudo systemctl stop mysql

Puede verificar si MySQL está realmente detenido con el comando:

$ sudo systemctl status mysql

Salida de muestra:

● mysql.service - MySQL Community Server
      Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
      Active: inactive (dead) since Sat 2021-05-29 11:53:08 UTC; 8s ago
     Process: 560 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
     Process: 666 ExecStart=/usr/sbin/mysqld (code=exited, status=0/SUCCESS)
    Main PID: 666 (code=exited, status=0/SUCCESS)
      Status: "Server shutdown complete"
 May 29 10:08:33 ubuntu2004.localdomain systemd[1]: Starting MySQL Community Server…
 May 29 10:08:37 ubuntu2004.localdomain systemd[1]: Started MySQL Community Server.
 May 29 11:53:07 ubuntu2004.localdomain systemd[1]: Stopping MySQL Community Server…
 May 29 11:53:08 ubuntu2004.localdomain systemd[1]: mysql.service: Succeeded.
 May 29 11:53:08 ubuntu2004.localdomain systemd[1]: Stopped MySQL Community Server.

Bueno, el servicio MySQL no se está ejecutando.

Ahora, reinicie el servidor MySQL sin verificar los permisos ejecutando el siguiente comando:

$ sudo mysqld_safe --skip-grant-tables --skip-networking &

Aquí, --skip-grant-tables La opción le permite conectarse al servidor de base de datos mysql sin contraseña y con todos los privilegios. El --skip-networking La opción se utiliza para evitar que otros clientes se conecten al servidor de la base de datos. Y, el ampersand (& ) El símbolo se usa para ejecutar el comando en segundo plano, por lo que puede escribir los otros comandos dados en los pasos posteriores. Tenga en cuenta que el comando anterior es peligroso y su servidor de base de datos se vuelve inseguro y vulnerable a las amenazas de seguridad. Debe ejecutar este comando solo durante un breve período de tiempo para restablecer la contraseña.

Es posible que vea el siguiente error:

2021-05-29T12:00:19.991826Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2021-05-29T12:00:19.996942Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

Si ve este error, cree el directorio que falta (es decir, /var/run/mysqld ) y establezca los permisos adecuados como se muestra a continuación.

$ sudo mkdir -p /var/run/mysqld
$ sudo chown -R mysql:mysql /var/run/mysqld

Ahora intente nuevamente iniciar el servidor mysql sin contraseña y con privilegios de root:

$ sudo mysqld_safe --skip-grant-tables --skip-networking &

Luego, conéctese al servidor mysql usando el comando:

$ mysql

Accederá al indicador de shell de mysql.

 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 7
 Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu)

 Copyright (c) 2000, 2021, Oracle and/or its affiliates.

 Oracle is a registered trademark of Oracle Corporation and/or its
 affiliates. Other names may be trademarks of their respective
 owners.

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

Dado que iniciamos sesión sin cargar tablas de concesión (porque usamos --skip-grant-tables opción), no podemos usar ALTER USER comando para restablecer la contraseña. Entonces, carguemos las tablas de concesión usando el comando:

mysql> FLUSH PRIVILEGES;

Ahora, ejecute el siguiente comando para actualizar la contraseña del usuario root de mysql:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]#@!';

En el comando anterior, reemplaza [email protected]#@! con tu propia contraseña. Tenga en cuenta que si ha habilitado Validate Password componente, debe utilizar una contraseña segura.

Finalmente, salga del indicador de mysql:

mysql> exit

Finalmente, apague el servidor de base de datos en ejecución que inició anteriormente con --skip-grant-tables opción. Para hacerlo, ejecute:

$ sudo mysqladmin -u root -p shutdown

Se le pedirá que ingrese su sudo contraseña seguida de MySQL root contraseña de usuario que estableció en el paso anterior.

[sudo] password for ostechnix: 
Enter password: 
2021-05-29T12:09:38.425737Z mysqld_safe mysqld from pid file /var/lib/mysql/ubuntu2004.localdomain.pid ended
[1]+  Done                    sudo mysqld_safe --skip-grant-tables --skip-networking

Si el comando anterior no funciona, busque el archivo .pid file que contiene el ID de proceso del servidor. El archivo PID normalmente estará disponible en /var/lib/mysql/ o /var/run/mysqld/ o /usr/local/mysql/data/ directorio dependiendo de su distribución, nombre de host y configuración. Generalmente, el nombre del archivo tiene una extensión de .pid y comienza con mysqld o el nombre de host de su sistema.

En mi caso, es "/var/lib/mysql/ubuntuserver.pid" .

Entonces, detuve la instancia del servidor de la base de datos con el comando:

$ sudo kill `/var/lib/mysql/ubuntuserver.pid`

Utilice la marca de retroceso para mencionar la ruta del archivo.

También podemos encontrar el pid de MySQL usando ps y grep comandos como a continuación:

$ ps ax | grep mysql

Salida de muestra:

1930 pts/0 S 0:00 sudo mysqld_safe --skip-grant-tables --skip-networking
1931 pts/0 S 0:00 /bin/sh /usr/bin/mysqld_safe --skip-grant-tables --skip-networking
2091 pts/0 Sl 0:28 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-grant-tables --skip-networking --log-error=/var/log/mysql/error.log --pid-file=ubuntuserver.pid

Mátalo manualmente como se muestra a continuación:

$ sudo kill <PID>

O, elimine todos los servicios de MySQL:

$ sudo  killall mysql

Ahora, inicie el servicio MySQL normalmente usando el comando:

$ sudo systemctl start mysql

Ahora, inicie sesión en el servidor MySQL con una nueva contraseña:

$ mysql -u root -p

Salida de muestra:

2. Restablecer la contraseña de root de MySQL con el archivo de contraseña

La otra forma de restablecer la contraseña raíz de mysql es usar init_file variable del sistema.

Detener el servicio MySQL:

$ sudo systemctl stop mysql

Cree un archivo de texto, por ejemplo ostechnix.txt :

$ vi ostechnix.txt

Agregue la siguiente línea en él:

ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]#@!';

¡Reemplace [email protected]#@! con su propia contraseña en la línea de arriba. Si ha habilitado Validate Password complemento, debe especificar una contraseña segura. Guarde y cierre el archivo.

Ahora, inicie el servidor MySQL con el init_file variable del sistema que apunta a ostechnix.txt archivo:

$ sudo mysqld --init-file=/home/sk/ostechnix.txt &

Este comando ejecutará el contenido de ostechnix.txt y actualice el [email protected] contraseña de la cuenta con la nueva contraseña mencionada en el ostechnix.txt archivo y finalmente inicie el servidor mysql.

Ahora detenga y reinicie el servidor mysql normalmente:

$ sudo systemctl stop mysql
$ sudo systemctl start mysql

Finalmente, elimine el archivo de contraseña, es decir, ostechnix.txt .

$ rm /home/sk/ostechnix.txt

Ahora puede iniciar sesión en el servidor mysql con una nueva contraseña usando el comando:

$ mysql -u root -p

También publicamos un método ligeramente diferente para restablecer la contraseña de root de MySQL. Consulta la siguiente guía para obtener más información:

>> How To Reset Root Password In MySQL 8 On Ubuntu Linux

Conclusión

En esta guía, hemos aprendido dos formas diferentes de restablecer la contraseña olvidada del usuario raíz de MySQL en los sistemas operativos Linux. Si perdió la contraseña de usuario de su cuenta administrativa de la base de datos, puede restablecerla fácilmente en un par de minutos.


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. Restablecer la contraseña de root en Rocky Linux:¿cómo hacerlo?

  5. Cómo restablecer la contraseña raíz del servidor MySQL

Cómo restablecer la contraseña de root en MySQL 8 en Ubuntu Linux

Cómo restablecer la contraseña de administrador de WordPress a través de MySQL

¿Olvidó la contraseña de Linux en WSL? Aquí está cómo restablecerlo fácilmente

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

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

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