MySQL
Recuperar y restablecer la contraseña de root predeterminada para MySQL 5.7+
Buscar..
Introducción
Después de MySQL 5.7, cuando instalamos MySQL a veces no necesitamos crear una cuenta de root o dar una contraseña de root. De forma predeterminada, cuando iniciamos el servidor, la contraseña predeterminada se almacena en el archivo mysqld.log
. Necesitamos iniciar sesión en el sistema usando esa contraseña y necesitamos cambiarla.
Observaciones
Recuperar y restablecer la contraseña de root predeterminada usando este método solo es aplicable para MySQL 5.7+
¿Qué sucede cuando se inicia el servidor por primera vez?
Dado que el directorio de datos del servidor está vacío:
- El servidor está inicializado.
- El certificado SSL y los archivos de claves se generan en el directorio de datos.
- El complemento validate_password está instalado y habilitado.
- Se crea la cuenta de superusuario 'root' @ 'localhost'. La contraseña para el superusuario se establece y almacena en el archivo de registro de errores.
Cómo cambiar la contraseña de root usando la contraseña predeterminada
Para revelar la contraseña "root" predeterminada:
shell> sudo grep 'temporary password' /var/log/mysqld.log
Cambie la contraseña de root lo antes posible iniciando sesión con la contraseña temporal generada y establezca una contraseña personalizada para la cuenta de superusuario:
shell> mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!';
Nota: el complemento validate_password de MySQL se instala de forma predeterminada. Esto requerirá que las contraseñas contengan al menos una letra mayúscula, una letra minúscula, un dígito y un carácter especial, y que la longitud total de la contraseña sea de al menos 8 caracteres.
restablecer la contraseña de root cuando "/ var / run / mysqld 'para el archivo socket UNIX no existe"
Si olvido la contraseña, obtendré un error.
$ mysql -u root -p
Introducir la contraseña:
ERROR 1045 (28000): Acceso denegado para el usuario 'root' @ 'localhost' (usando la contraseña: YES)
Intenté resolver el problema conociendo primero el estado:
$ systemctl status mysql.service
mysql.service - Servidor de comunidad MySQL cargado: cargado (/lib/systemd/system/mysql.service; habilitado; proveedor preestablecido: en Activo: activo (en ejecución) desde Jue 2017-06-08 14:31:33 IST; 38s ago
Luego utilicé el código mysqld_safe --skip-grant-tables &
pero mysqld_safe --skip-grant-tables &
el error:
mysqld_safe El directorio '/ var / run / mysqld' para el archivo de socket UNIX no existe.
$ systemctl stop mysql.service
$ ps -eaf|grep mysql
$ mysqld_safe --skip-grant-tables &
Lo resolví:
$ mkdir -p /var/run/mysqld
$ chown mysql:mysql /var/run/mysqld
Ahora uso el mismo código mysqld_safe --skip-grant-tables &
y obtengo
mysqld_safe Iniciar el demonio mysqld con bases de datos desde / var / lib / mysql
Si uso $ mysql -u root
obtendré:
Versión del servidor: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)
Copyright (c) 2000, 2017, Oracle y / o sus afiliados. Todos los derechos reservados.
Oracle es una marca registrada de Oracle Corporation y / o sus filiales. Otros nombres pueden ser marcas registradas de sus respectivos dueños.
Escriba 'ayuda'; o '\ h' para ayuda. Escriba '\ c' para borrar la declaración de entrada actual.
mysql>
Ahora es el momento de cambiar la contraseña:
mysql> use mysql
mysql> describe user;
Lectura de la información de la tabla para completar los nombres de tablas y columnas. Puede desactivar esta función para obtener un inicio más rápido con -A
Base de datos cambiada
mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('newpwd');
o Si tiene una cuenta raíz de mysql que puede conectarse desde cualquier lugar, también debe hacer:
UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
Metodo alternativo:
USE mysql
UPDATE user SET Password = PASSWORD('newpwd')
WHERE Host = 'localhost' AND User = 'root';
Y si tiene una cuenta de root que puede acceder desde cualquier lugar:
USE mysql
UPDATE user SET Password = PASSWORD('newpwd')
WHERE Host = '%' AND User = 'root';`enter code here
Ahora necesito quit
de mysql y detener / iniciar
FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
ahora de nuevo `mysql -u root -p 'y use la nueva contraseña para obtener
mysql>