GRANT privilege [, ...] ON object [, ...] TO { PUBLIC | GROUP group | username } |
Los posibles privilegios son:
Acceso a todas las columnas de una tabla/vista espec�fica.
Inserta datos en todas las columnas de una tabla espec�fica.
Actualiza todas las columnas de una tabal espec�fica.
Elimina filas de una tabla espec�fica.
Define las reglas de la tabla(vista (cer sentencia CREATE RULE).
Otorga todos los privilegios-
El nombre de un objeto al que se quiere conceder el acceso. Los posibles objetos son:
tabla
vista
secuencia
indice
Una abreviaci�n para representar a todos los usuarios.
Un grupo al que se otorgan privilegios. En la actual versi�n, el grupo debe haber sido creado expl�citamente como se describe m�s adelante.
El nombre de un usuario al que se quiere conceder privilegios. PUBLIC es una abreviatura para representar a todos los usuarios.
GRANT permite al creador de un objeto el dar permisos espec�ficos a todos los usuarios (PUBLIC) o a un cierto usuario o grupo. Usuarios distintos al creador pueden no tener permisos de acceso a menos que el creador se los conceda, una vez que el objeto ha sido creado.
Una vez que un usuario tiene privilegios sobre un objeto, tiene posibilidad de ejecutar ese privilegio. No hay necesidad de conceder privilegios al creador de un objeto; el creador obtiene autom�ticamente TODOS los privilegios, y puede tambi�n eliminar el objeto.
Actualmente, para conceder prvilegios en Postgres a solo algunas columnas, he de crear una vista que contenga las columnas deseadas, y conceder provilegios sobre esa vista.
Use psql \z para obtener m�s informaci�n sobre los permisos de los objetos existentes:
Database = lusitania +------------------+---------------------------------------------+ | Relacion | Conceder/Eliminar Permisos | +------------------+---------------------------------------------+ | mytable | {"=rw","miriam=arwR","group todos=rw"} | +------------------+---------------------------------------------+ Leyenda: uname=arwR -- se conceden privilegios a un usuario group gname=arwR -- se conceen privilegios al un GRUPO =arwR -- se conceden privilegios a PUBLIC r -- SELECT w -- UPDATE/DELETE a -- INSERT R -- RULE arwR -- ALL |
Actualmente, para crear un GRUPO ha de insertar los datos manualmente en la tabla pg_group como sigue:
|
V�ase la sentencia REVOKE para ver como eliminar los privilegios de acceso.
Concede privilegios de inserci�n a todos los usuarios de la tabla 'films':
GRANT INSERT ON films TO PUBLIC; |
Concede todos los privilegiso al usuario 'manuel' sobre la vista 'kinds':
GRANT ALL ON kinds TO manuel; |
La sintaxis de SQL92 para GRANT permite establecer derechos sobre columnas individuales, y permite establecer el privilegio de conceder el mismo privilegio a otros:
GRANT privilege [, ...] ON object [ ( column [, ...] ) ] [, ...] TO { PUBLIC | username [, ...] } [ WITH GRANT OPTION ] |
Los campos son compatibles con los de la implementaci�n de Postgres, con las siguientes incorporaciones:
SQL92 permite privilegios adicionales a los mencionados:
Permitido para hacer referencia a alguna o todas las columnas de una tabla/vista espec�fica en limitaciones de integridad.
Permitido para usar un dominio, un conjunto de caracteres, cotejo o traducci�n. Si un objeto especifica algo que no sea una tabla/vista, privilegio ha de especificar solo USAGE.
SQL92 permite adicionalmente la palabra clave no funcional TABLE.
Se permite usar el juego de caracteres especificado.
Se permite usar la secuencia de cotejo especificada.
Se permite usar la conversi�n de juego de caracters especificada.
Se permite usar el dominio especificado.
Se permite conceder el mismo privilegio a otros.