it-swarm-es.com

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

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

14
slolife

Lea y ejecute el capítulo sobre cómo restablecer 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 en su lugar.

15
David Schmitt

Si se trata de una caja de Debian/Ubuntu, hay una cuenta especial equivalente a root 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;

root debería ser ahora accesible usando su nueva contraseña:

mysql -uroot -p
6
Brent

Mi usuario root no existía. En

CREATE USER [email protected];

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 INSERT es un PITA.

3
kqw

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

  1. Como no conocemos la contraseña actual, el servidor MySQL debe ejecutarse omitiendo/omitiendo las credenciales de inicio de sesión actuales. Indique al servidor MySQL que omita la tabla de concesiones de acceso mediante:
    • Detenga su servidor MySQL (si ya se está ejecutando).
    • Busque su archivo de configuración de MySQL, my.cnf. (Para mí se colocó @ /Applications/XAMPP/xamppfiles/etc. Puede buscar si no puede encontrarlo).
    • Abra el archivo my.cnf En cualquier editor de texto.
    • Agregue "skip-grant-tables" (Sin comillas) al final de la sección [mysqld] Y guarde el archivo.
    • Ahora inicie su servidor MySQL. Comenzará con la opción skip-grant-tables.
  2. Abra Terminal y ejecute el comando mysql
  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.
0
Saurabh Hooda