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 🙂