¿Cómo restablecer o recuperar la contraseña de la cuenta de administrador para MySQL?

14

Tengo una base de datos MySQL que "heredé" y no me dieron las credenciales de administrador. Sin embargo, tengo acceso al cuadro en el que se ejecuta. ¿Hay alguna forma de recuperar las credenciales de administrador o crear nuevas?

Slolife
fuente

Respuestas:

15

Lea y ejecute el capítulo sobre restablecimiento de la contraseña de root en el Manual de referencia de MySQL.

Este procedimiento inicia el demonio mysql sin autorización, lo que le permite conectarse sin proporcionar credenciales. En este modo, puede conectarse normalmente y restablecer contraseñas y concesiones. Luego, no olvide iniciar mysql nuevamente con la autorización adecuada.

David Schmitt
fuente
6

Si este es un cuadro de Debian / Ubuntu, hay una cuenta especial equivalente a la raíz llamada debian-sys-maint . Puede leer la contraseña en /etc/mysql/debian.cnf

Con esa contraseña, puede iniciar sesión en mysql como debian-sys-maint usando:

mysql --defaults-file=/etc/mysql/debian.cnf mysql

Una vez que haya iniciado sesión, haga lo siguiente:

update user set password=password('<new password>') where user='root';
flush privileges;
quit;

Ahora se debe poder acceder a la raíz con su nueva contraseña:

mysql -uroot -p
Brent
fuente
3

Mi usuario root no existía. En

CREATE USER root@localhost;

tengo

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

La solución fue

mysqld_safe  --skip-grant-tables &
mysql
INSERT INTO user (Host,User,Password) VALUES ('localhost', 'root', 'changethispassword');
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;

Después de eso, agregué todos los privilegios uno por uno con un poco de ayuda de esto:

mysql mysql -e "SELECT * FROM user WHERE User='root'\G"|grep N

(y este podría y debería automatizarse más)

Nota: encontrar el número correcto de 'Y's en el INSERTes un PITA.

kqw
fuente
0

Como los pasos en el Manual de referencia de MySQL no son muy claros, estoy tratando de responder aquí en un lenguaje más fácil. (esta respuesta es relevante para los usuarios de MacBook OSX):

  1. Como no conocemos la contraseña actual, el servidor MySQL debe ejecutar omitir / omitir las credenciales de inicio de sesión actuales. Indique al servidor MySQL que omita la tabla de permisos de acceso:
    • Detenga su servidor MySQL (si ya se está ejecutando).
    • Encuentra el archivo de configuración de MySQL, my.cnf. (Para mí se colocó @ /Applications/XAMPP/xamppfiles/etc. Puedes buscar si no puedes encontrarlo).
    • Abrir my.cnfarchivo en cualquier editor de texto.
    • Agregue "skip-grant-tables"(sin comillas) al final de la [mysqld]sección y guarde el archivo.
    • Ahora inicie su servidor MySQL. Comenzará con la skip-grant-tablesopción.
  2. Abrir Terminaly ejecutar mysqlcomando
  3. Ejecutar comando mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
  4. Ejecutar comando mysql> FLUSH PRIVILEGES;
  5. Ejecutar comando mysql> exit
  6. Reinicie el servidor MySQL.
Saurabh Hooda
fuente