Hoy os voy a enseñar la forma de sacar el listado de GRANTs de todos los usuarios de una base de datos MySQL por consola de Linux, el cual os puede ser muy útil para scripts de backup.
El proceso es muy sencillo lo que se realiza es sacar por cada usuario de la base de datos un Show grants for .
mysql -u USUARIO -h HOST -p'PASSWORD' --silent --skip-column-names --execute "select concat('show grants for ','\'',User,'\'@\'',Host,'\';') as User from mysql.db where db in ('NOMBRE BASE DE DATOS')" | sort | while read u; do echo "-- $u"; mysql -u USUARIO -h HOST -p'PASSWORD' --silent --skip-column-names --execute "$u" | sed 's/$/;/'; done
Tenéis que sustituir los valores en mayúsculas y ejecutando esto vamos a obtener por consola todo el listado ordenado por usuarios, de esta forma si tenemos que realizar copias periódicas de la base de datos pues también podemos añadir esta linea al script y tener la copia de todos los GRANT.
Si trabajáis con MySQL quizás os interese los siguientes posts:
- Cómo securizar los accesos desde consola a MySQL
- Error en MYSQL Incorrect key file for table /tmp/#sql_XXXX_X.MYI
- Cómo exportar e importar en los principales motores base de datos
- Cómo listar los GRANTs de todos los usuarios de una bbdd MYSQL
- Como matar sesiones en MySQL usando pt-kill
Compártelo: