Recientemente, instalando una aplicación para la gestión de reservas, me llevé la desagradable sorpresa de que en el script SQL de carga de datos, se eliminaban los permisos del usuario root y los dejaba con los mínimos posibles (visualizar tablas y editarlas, pero sin poder crear nuevas BBDD, ni usuarios, ni tablas, ni…) O sea, un desastre. Pero buscando en Internet, encontré la forma de recuperar todos los permisos del usuario root. Incluso se puede usar el método que describo a continuación para resetear el password de root en MySQL a otro que conozcamos (por si se nos olvida el original).
Lo primero, parar/matar los procesos de MySQL que ya estén en marcha:
/etc/init.d/mysql stop
Relanzar el servidor MySQL, PERO indicándole que no tenga en cuenta ninguna gestión de permisos
(¡via libre!)
/usr/bin/mysqld_safe --skip-grant-tables &
Conectar con MySQL, SIN password, a la BBDD principal de gestión (que lleva el nombre mysql)
mysql -h your_hostname mysql
Darle permisos al root para TODO. Indicar el nuevo password:
mysql update user set Select_priv='Y', Insert_priv='Y', Update_priv='Y', Delete_priv='Y', Create_priv='Y', Drop_priv='Y', Reload_priv='Y', Shutdown_priv='Y', Process_priv='Y', File_priv='Y', Grant_priv='Y', References_priv='Y', Index_priv='Y', Alter_priv='Y', Show_db_priv='Y', Super_priv='Y', Create_tmp_table_priv='Y', Lock_tables_priv='Y', Execute_priv='Y', Repl_slave_priv='Y', Repl_client_priv='Y', Create_view_priv='Y', Show_view_priv='Y', Create_routine_priv='Y', Alter_routine_priv='Y', Create_user_priv='Y'
Password = PASSWORD('contraseña')
WHERE User='root';
Recargar los nuevos privilegios:
FLUSH PRIVILEGES;
Salir del cliente MySQL. Parar MySQL y volverlo a lanzar normal:
/etc/init.d/mysql start
Bufff! menos mal que existe este método 🙂