Cuando creamos una base de datos MySQL es una buena medida de seguridad crear diferentes usuarios con distintos niveles de privilegios atendiendo a las necesidades de cada uno de ellos. Es por esto, que resulta útil conocer los diferentes privilegios de usuario en bases de datos MySQL.
En MySQL los privilegios de usuario que podemos asignar se pueden agrupar básicamente en los siguientes tres grupos o contextos:
- Privilegios adminitrativos: permiten a los usuarios gestionar el servidor MySQL. Son privilegios globales, que no se aplican a ninguna base de datos específica.
- Privilegios sobre datos: se aplican a bases de datos y a todos los elementos que contienen. Se pueden aplicar globalmente o a bases de datos específicas.
- Privilegios estructurales o de ejecución: se aplican a objetos de las bases de datos MySQL como tablas, índices, vistas, ... Se pueden aplicar para un objeto específico o para todos los objetos de todas las bases de datos del servidor MySQL.
Privilegios Administrativos
- GRANT: Permite añadir usuarios y privilegios sin recargar la tabla de privilegios
- SUPER: Permite conectarse incluso si se ha superado el número máximo de conexiones y otras operaciones como la configuración de variables globales del servidor y gestión de procesos.
- PROCESS: Permite visualizar los procesos pertenecientes a cada usuario
- RELOAD: Permite la recarga de la configuración del servidor y vaciar la cache
- SHUTDOWN: Permite apagar el servidor
- SHOW DATABASES: Permite obtener todas las bases de datos del servidor MySQL
- REFERENCES: No usado actualmente
- REPLICATION CLIENT: Permite obtener información sobre el estado del maestro/esclavo del servidor
- REPLICATION SLAVE: Utilizado en la replicación de servidores permite a los servidores esclavos actualizarse a través de una cuenta de usuario con este privilegio
- CREATE USER: Permite la gestión de cuentas de usuario
- USAGE: Permite la gestión de cuentas de usuario. Requerido por GRANT
- ALL [PRIVILEGES]: Asigna todos los privilegios a un usuario.
Privilegios sobre datos
- SELECT: Permite la lectura de datos de una base de datos MySQL
- INSERT: Permite insertar datos de una base de de datos MySQL
- UPDATE: Permite actualizar datos de una base de datos MySQL
- DELETE: Permite el borrado de datos
- FILE: Permite importar y exportar datos en bases de datos MySQL
Privilegios Estructurales o de ejecución
- CREATE: Permite la creación de nuevas bases de datos y tablas
- ALTER: Permite modificar la estructura de las tablas de una base de datos MySQL
- INDEX: Permite la creación y borrado de índices
- DROP: Permite el borrado de tablas y bases de datos
- CREATE TEMPORARY TABLES: Permite la creación temporal de tablas en una base de datos MySQL
- SHOW VIEW: Permite la ejecución de SHOW CREATE VIEW que muestra el comando creador de una determinada vista
- CREATE ROUTINE: Permite la creación funciones y procedimientos almacenados.
- ALTER ROUTINE: Permite modificar y eliminar funciones y procedimientos
- EXECUTE: Permite la ejecución de funciones y procedimientos en MySQL
- CREATE VIEW: Permite la creación de nuevas vistas