Desde que existen los datos y las bases de datos existen los backups, pero ese no es el único punto que interviene en la seguridad e integridad de nuestros datos. Es imprescindible limitar el usuario que tiene permisos para realizar backups para evitar problemas.
Todos sabemos que a la hora de hacer un dump o volcar una base de datos a un archivo comprimido se puede realizar con el usuario root, pero esto es un problema cuando lo que ya nos interesa es programar scripts que periódicamente se conecten y vuelquen estos datos. Poniendo el usuario root y la contraseña del mismo en los scripts puede ser un problema de seguridad y por eso tendremos que pensar en revisar lo que comento en este artículo.
¿No es mejor crear un usuario que únicamente pueda realizar la copia de los datos? Pero entonces ¿Qué permisos le damos?, vamos a ver cuales son los mínimos permisos que podemos darle a un usuario para que pueda realizar correctamente la copia de nuestras bases de datos a archivos con un script o con un cron directamente, en el cual podremos poner la contraseña sin temor a que se dañen las bases de datos.
Lo que haremos será crearnos un usuario nuevo con el nombre que queramos, como por ejemplo backupin y de contraseña algo que no tengamos que usar como AsdÑFjmQWmfWQE7t6293 con lo que ya tendremos un usuario con acceso.
CREATE USER 'backupin'@'%' IDENTIFIED BY 'AsdÑFjmQWmfWQE7t6293';
Ahora le asignaremos permisos sobre el servidor (o sobre las bases de datos en concreto que queramos que use), únicamente para SELECT, SHOW DATABASES y LOCK TABLES.
Grant SELECT,SHOW DATABASES,LOCK TABLES On *.* To 'backupin'@'%';
Con estos tres permisos estaremos permitiendo que vea las bases de datos, bloquee las tablas para hacer el select y las lea, que serán permisos suficientes para hacer bakups, y en caso de algún problema de seguridad o robo de contraseña no podrán modificar nuestras bases de datos aunque sí leerlas (para eso podemos configurar mysql para que no permita conexiones externas por ejemplo o solo desde una ip en concreto).
Al final no debemos olvidarnos de hacer un flush de los permisos si lo estamos haciendo desde sentencias sql o consola, si usais un gestor de bases de datos seguramente lo haga automático.
FLUSH PRIVILEGES;
Ya estaremos listos para hacer backups con nuestros scripts, en otro artículo aprenderemos a automatizar backups diarios de nuestras bases de datos mysql.