Ningún usuario puede llevar a cabo una operación si antes no se le ha concedido el permiso para ello. En el apartado anterior hemos creado un usuario para iniciar sesión, pero si con él intentáramos crear una tabla veríamos que no tenemos permisos suficientes para ello.
Para poder acceder a los objetos de una base de datos necesitas tener privilegios (permisos). Éstos se pueden agrupar formando roles, lo que simplificará la administración. Los roles pueden activarse, desactivarse o protegerse con una clave. Mediante los roles podemos gestionar los comandos que pueden utilizar los usuarios. Un permiso se puede asignar a un usuario o a un rol.
Un privilegio o permiso se concede con el comando GRANT
(conceder).
Si se dan privilegios sobre los objetos:
GRANT {privilegio_objeto [, privilegio_objeto]...|ALL|[PRIVILEGES]}
ON [usuario.]objeto
FROM {usuario1|rol1|PUBLIC} [,{usuario2|rol2|PUBLIC] ...
[WITH GRANT OPTION];
donde:
ON
especifica el objeto sobre el que se conceden los privilegios.TO
señala a los usuarios o roles a los que se conceden privilegios.ALL
concede todos los privilegios sobre el objeto especificado.[WITH GRANT OPTION]
permite que el receptor del privilegio se lo pueda conceder a otros.PUBLIC
hace que un privilegio esté disponible para todos los usuarios.
En el siguiente ejemplo Juan ha accedido a la base de datos y ejecuta los siguientes comandos:
GRANT INSERT TO Usuarios TO Ana;
(permitirá a Ana insertar datos en la tabla Usuarios)GRANT ALL ON Partidas TO Ana;
(Juan concede todos los privilegios sobre la tabla Partidas a Ana)
Los privilegios de sistema son los que dan derecho a ejecutar comandos SQL o acciones sobre objetos de un tipo especificado. Existen gran cantidad de privilegios distintos.
La sintaxis para dar este tipo de privilegios la tienes aquí:
GRANT {Privilegio1 | rol1 } [, privilegio2 | rol2}, ...]
TO {usuario1 | rol1| PUBLIC} [, usuario2 | rol2 | PUBLIC} ... ]
[WITH ADMIN OPTION];
Donde
TO
señala a los usuarios o roles a los que se conceden privilegios.WITH ADMIN OPTION
es una opción que permite al receptor de esos privilegios que pueda conceder esos mismos privilegios a otros usuarios o roles.PUBLIC
hace que un privilegio esté disponible para todos los usuarios.
Veamos algunos ejemplos:
GRANT CONNECT TO Ana;
Concede a Ana el rol de CONNECT
con todos los privilegios que éste tiene asociados.
GRANT DROP USER TO Ana WITH ADMIN OPTION;
Concede a Ana el privilegio de borrar usuarios y que ésta puede conceder el mismo privilegio de borrar usuarios a otros.