Há dois tipos de privilégios:
(i) privilégios de acesso
(a tabelas,visões, etc) e que são: select, insert,
delete, update [col,col..] e references;
( all significa todos os
5 privilégios acima); o privilégio para atualizar uma tabela
(update) pode, opcionalmente, ser restringido para uma ou
mais colunas da tabela (ver um exemplo mais adiante);
references é o privilégio
que permite definir numa outra tabela, digamos Dependentes, uma chave
estrangeira para a Chave Primária da tabela em questão, digamos,
Funcionarios) e,
(ii) privilégio para
execução de stored procedures e triggers: execute
Notação:
Uma palavra com a letra final s
entre
parênteses significa uma ou mais entidades daquele tipo.
Por exemplo: user(s): uma lista
de um ou mais usuarios do SGBD (separados por virgula);
public significa:
todos
os usuários do sistema (SGBD e Unix)
privilégio(s): uma lista
de um ou mais privilégios de acesso,
tabela(s): uma lista de um ou mais
nomes de tabelas ou visões (onde aparece nome de tabela estenda
para nome de visão)
Uma palavra reservada entre colchetes
significa que seu uso é opcional. Por exemplo: [table]
Possíveis alternativas para
uma parte de um comando serão separadas pela barra vertical:
|
Palavras reservadas serão escritas
simultaneamente em bold e itálico. Nomes
de objetos criados por usuários serão escritos com o font
normal. Usaremos indistintamente minusculas (preferivel) ou maiusculas
para palavras reservadas.
Por exemplo: GRANT
ou grant.
Outorgando privilégios sobre objetos a usuários:
É um bilhete contendo um conjunto
de privilégio(s) para uma ou mais tabelas ou visões. Pode
ser concedido (via grant) a um ou mais usuários.
Passos para criar/usar um role:
Inicialmente o criador de um objeto
(tabela, view, stored procedure, trigger, etc) possui todos os privilégios
sobre o objeto e ninguém mais.
O criador pode então conceder
privilégios (discriminadamente) a outros usuários com um
dos comandos vistos anteriormente.
O direito de passar privilégios
adiante pode ser concedido caso o criador inclua a opção
with
grant option no final do comando grant.
Exemplo:
grant all on mytable
to martina with grant
option
(a usuária
martina adquire o direito de passar a qualquer usuário os privilégios
de acesso que tenha (no caso todos) sobre a tabela mytable)
De forma semelhante, um role pode
ser passado adiante se foi concedido pelo seu criador com a opção
with
admin option:
Grant
rolename(s) to user(s) with admin option
Privilégios relacionados com stored procedures e triggers
Através do comando SQL revoke.
Restrições gerais sobre revogação de privilégios:
revoke privilégio(s) on [table] tablename from user(s) | procnames(s)| triggername(s)| rolename(s)
revoke execute on procedure myprocname from user(s) | procname(s) | triggername(s)
revoke rolename(s) from user(s)
revoke privilégio(s) on tablename(s) from rolename(s)
revoke grant option for privilegio(s) on tablename from user(s)
revoke insert, update on accounts from procedure money_transfer, act_maint trigger show_user
revoke grant option for select on departments from Ana