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?
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.
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
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 INSERT
es un PITA.
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):
my.cnf
. (Para mí se colocó @ /Applications/XAMPP/xamppfiles/etc
. Puedes buscar si no puedes encontrarlo).my.cnf
archivo en cualquier editor de texto. "skip-grant-tables"
(sin comillas) al final de la [mysqld]
sección y guarde el archivo. skip-grant-tables
opción. Terminal
y ejecutar mysql
comando mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit