A instrução GRANT

A instrução GRANT é utilizada na linguagem SQL para conceder permissões (ou privilégios) de acesso a objetos da base de dados (como tabelas, visões, funções, esquemas, etc.) a utilizadores, grupos ou funções. Ela faz parte do padrão SQL e está presente em todos os principais sistemas de gestão de base de dados relacionais (SGBDs), com pequenas variações de sintaxe e recursos entre eles

Sintaxe

GRANT {privilegios|ALL} [(colunas)]
ON {objeto | * | *.*}
TO {utilizador(es) | public} 
[WITH GRANT OPTION]
  • <privilegio(s)>: Ações permitidas, como SELECT, INSERT, UPDATE, DELETE, etc.
  • <objeto>: O objeto da base de dados ao qual o privilégio se refere (ex: tabela, visão, função).
  • <utilizador(es)>: A quem o privilégio será concedido.
  • <public>: Todos os utilizadores do sistema.
  • WITH GRANT OPTION: (Opcional) Permite que o destinatário também conceda esse privilégio a outros utilizadores.

Exemplos

Concede todos os privilégios para todas as bases de dados ao utilizador ‘useradmin’:

GRANT ALL ON *.* TO 'useradmin';

Concede os privilégios SELECT e INSERT para todas as bases de dados ao utilizador ‘useradmin’:

GRANT SELECT, INSERT ON *.* TO 'useradmin';

Concede todos os privilégios para a base de dados ‘vendasdb’ ao utilizador ‘useradmin’:

GRANT ALL ON vendasdb.* TO 'useradmin';

Concede os privilégios SELECT e INSERT para a base de dados ‘vendasdb’ ao utilizador ‘antunes’:

GRANT SELECT, INSERT ON vendasdb.* TO 'antunes';

Concede todos os privilégios para a tabela ‘clientes’ da base de dados ‘vendasdb’ ao utilizador ‘carlos234’:

GRANT ALL ON vendasdb.clientes TO 'carlos234';

Concede os privilégios SELECT e INSERT para a tabela ‘clientes” da base de dados ‘vendasdb” ao utilizador ‘carlos234 que , por sua vez, pode conceder os mesmos privilégios a outro utilizador’:

GRANT SELECT, INSERT ON vendasdb.clientes TO 'carlos234'@ WITH GRANT OPTION;

Concede o privilégio SELECT para a coluna ‘col1’ e o privilégio INSERT para as colunas ‘col1’ and ‘col2’ da tabela ‘clientes’ da base de dados ‘vendasdb’ ao utilizador ‘carlos234’:

GRANT SELECT (col1), INSERT (col1,col2) ON vendasdb.clientes TO 'carlos234';