Restaurar privilegios usuario Root en MySQL

Puede ocurrir (aunque es raro) que el usuario root de MySQL pierda los privilegios respecto a las bases de datos. Esto puede ser solucionado del siguiente modo:

  1. Parar el servicio mysql (Entrar en services.msc y parar el servicio).
  2. Iniciar mysql desde línea de comandos con la opción –skip-grant-tables:
  3. mysqld --skip-grant-tables
  4. Abrimos otra consola, y nos conectamos al mysql con el usuario root, pero sin password:
  5. mysql -u root
  6. Seleccionamos la base de datos mysql:
  7. use mysql;
  8. Añadimos un nuevo superusuario llamado root2, de este modo creamos un ususario con todos los privilegios, a través del cual otorgaremos de nuevo los privilegios al usuario root:
  9. INSERT INTO user VALUES('localhost', 'root2', '', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', '0', '0', '0');
  10. Paramos el servicio mysqld –skip-grant-tables, podemos matarlo desde el taskmanager y arrancamos el servicio mysql de forma normal.
  11. Accedemos con el nuevo superusuario (no tiene clave):
  12. mysql -u root2
  13. Otorgamos al usuario root los permisos necesarios:
  14. GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'root_password' WITH GRANT OPTION;
  15. Recargamos los privilegios:
  16. FLUSH PRIVILEGES;
  17. Eliminamos el usuario root2:
  18. use mysql;
    delete from user where user='root2';flush privileges;

Basado en el artículo de solotuweb.com

13 comentarios en “Restaurar privilegios usuario Root en MySQL

  1. Muy útil, en mi caso al generar el nuevo usuario recibía el siguiente error:

    Column count doesn’t match value count at row 1

    Así que directamente hice un UPDATE de la clave de root dentro de la shell y con el modo --skip-grant-tables:

    UPDATE user SET password=PASSWORD(‘nueva_clave’) WHERE user=’root’;

    • jajaja… estimado amigo me acabas de dar una idea impresionante… y sencilla de como se puede restaurar los privilegios del cual este post originalmente fue creado… jejeje… fue buena i efectiva… gracias indirectamente…

  2. a mi me pasa lo mismo que dice david, pero con la opcion que dice david, solo se cambia el password pero no se recuperan los permisos…..

    INSERT INTO user VALUES(‘localhost’, ‘root2’, », ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, », », », », ‘0’, ‘0’, ‘0’);

    el insert da el error

    Column count doesn’t match value count at row 1

    como se soluciona?

    • Si tienes acceso a la base de datos mysql, inserta para cada campo conocido en user esos valores, que sean congruentes el numero de filas y los campos a insertar.

      • Hi, could you please email me the «Sun Eco Optimization Service for Datacenter Advanced» kit. I have a hard time fnniidg it and it’s 2030 hours on Saturday here And congrats on the MySQL appointment!Thank you from Singaporee1

  3. Si estan usando xampp la mejor opcion es buscar la ruta C:\xampp\mysql donde esta instalado y luego buscar y ejercutar el archivo resetroot y listo ya tenemos mysql reseteado.

  4. mysql> INSERT INTO user VALUES(‘localhost’, ‘root2’, », ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’, », », », », ‘0’, ‘0’, ‘0’);

  5. INSERT INTO user(Host,User,Password,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Reload_priv,Shutdown_priv,Process_priv,File_priv,Grant_priv,References_priv,Index_priv,Alter_priv,Show_db_priv,Super_priv,Create_tmp_table_priv,Lock_tables_priv,Execute_priv,Repl_slave_priv,Repl_client_priv,Create_view_priv,Show_view_priv,Create_routine_priv,Alter_routine_priv,Create_user_priv,Event_priv,Trigger_priv,ssl_type,ssl_cipher,x509_issuer,x509_subject,max_questions,max_updates,max_connections,max_user_connections)Values(‘localhost’,’root2′,»,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,»,»,»,»,0,0,0,0);

    • SI copian y pegan el ultimo código y no les funciona, deben llevarlo antes a block de notas y cambiar las comillas, por comilla sencilla, voy a pegarlo acá a ver si les funciona de una vez:
      INSERT INTO user(Host,User,Password,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Reload_priv,Shutdown_priv,Process_priv,File_priv,Grant_priv,References_priv,Index_priv,Alter_priv,Show_db_priv,Super_priv,Create_tmp_table_priv,Lock_tables_priv,Execute_priv,Repl_slave_priv,Repl_client_priv,Create_view_priv,Show_view_priv,Create_routine_priv,Alter_routine_priv,Create_user_priv,Event_priv,Trigger_priv,ssl_type,ssl_cipher,x509_issuer,x509_subject,max_questions,max_updates,max_connections,max_user_connections)Values(‘localhost’,’root2′,»,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,»,»,»,»,0,0,0,0);

  6. Intente con la opción del insert, pero al intentar entrar me dice que acceso denegado, probe con clave y sin clave y lo mismo, probé la otra opción de resetear mysql, y tampoco :(

Comments are closed.