MySQL proporciona una gran variedad de tipos de privilegios.
• Privilegios relacionados con tablas: alter, create, delete, drop, index, insert, select, update
• Algunos privilegios administrativos: file, proccess, super reload, replication client, grant option, shutdown
• Algunos privilegios para fines diversos: lock tables, show databases, create temporary tables.
El privilegio all otorga todos los privilegios exceptuando el privilegio grant option. Y el privilegio usage no otorga ninguno, lo cual es útil cuando se desea, por ejemplo, simplemente cambiar la contraseña:
grant usage
on *.*
to visitante@localhost identified by ´secreto´;
Tipos de privilegios en MySQL
Tipo de privilegio | Operación que permite |
all [privileges] | Otorga todos los privilegios excepto grant option |
usage | No otorga ningún privilegio |
alter | Privilegio para alterar la estructura de una tabla |
create | Permite el uso de create table |
delete | Permite el uso de delete |
drop | Permite el uso de drop table |
index | Permite el uso de index y drop index |
insert | Permite el uso de insert |
select | Permite el uso de select |
update | Permite el uso de update |
file | Permite le uso de select . . . into outfile y load data infile |
process | Permite el uso de show full procces list |
super | Permite la ejecución de comandos de supervisión |
reload | Permite el uso de flush |
replication client | Permite preguntar la localización de maestro y esclavo |
replication slave | Permite leer los binlog del maestro |
grant option | Permite el uso de grant y revoke |
shutdown | Permite dar de baja al servidor |
lock tables | Permite el uso de lock tables |
show tables | Permite el uso de show tables |
create temporary tables | Permite el uso de create temporary table |
En entornos grandes, es frecuente encontrarse en la necesidad de delegar el trabajo de administrar un servidor de bases de datos para que otros usuarios, además del administrador, puedan responsabilizarse de otorgar privilegios sobre una base de datos particular. Esto se puede hacer en MySQL con el privilegio grant option:
mysql> grant all, grant option
-> on demo.*
-> to operador@localhost;
El mismo resultado se puede obtener con la siguiente sintaxis alternativa:
mysql> grant all
-> on demo.*
-> to operador@localhost
-> with grant option;
De este modo el usuario operador podrá disponer de todos los privilegios sobre la base de datos demo, incluido el de controlar el acceso a otros usuarios.