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>



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow