GRANT

Name

GRANT -- define privilégios de acesso

Synopsis

GRANT { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER } [,...] | ALL [ PRIVILEGES ] }
    ON [ TABLE ] nome_do_objeto [, ...]
    TO { nome_do_usuário | GROUP nome_do_grupo | PUBLIC } [, ...]

Descrição

O comando GRANT concede permissões específicas no objeto (tabela, visão, seqüência) para um ou mais usuários ou grupos de usuário. Estas permissões são adicionadas às já concedidas, caso existam.

A palavra chave PUBLIC indica que o privilégio deve ser concedido para todos os usuários, inclusive aos que vierem a ser criado posteriormente. PUBLIC pode ser considerado como um grupo implicitamente definido que sempre inclui todos os usuários. Observe que qualquer usuário em particular possui a soma dos privilégios concedidos diretamente para o mesmo, mais os privilégios concedidos para qualquer grupo do qual seja membro, mais os privilégios concedidos para PUBLIC.

Os usuários, fora o criador do objeto, não possuem nenhum privilégio de acesso ao objeto a menos que o criador conceda as permissões. Não existe nenhuma necessidade de se conceder privilégios ao criador do objeto, porque o criador automaticamente possui todos os privilégios (O criador pode, entretanto, decidir revogar alguns de seus próprios privilégios por motivo de segurança. Observe que esta capacidade de conceder e revogar privilégios é inerente ao criador, não podendo ser perdida. O direito de eliminar o objeto é da mesma forma inerente ao criador, não podendo ser concedido ou revogado).

Os privilégios possíveis são:

SELECT

Permite consultar qualquer coluna (SELECT) da tabela, visão ou seqüência especificada. Também permite utilizar o comando COPY FROM.

INSERT

Permite incluir novas linhas (INSERT) na tabela especificada. Também permite utilizar o comando COPY TO.

UPDATE

Permite modificar os dados de qualquer coluna (UPDATE) da tabela especificada. O comando SELECT ... FOR UPDATE também requer este privilégio (além do privilégio SELECT ). Para as seqüências, este privilégio permite o uso de nextval, currval e setval.

DELETE

Permite excluir linhas (DELETE) da tabela especificada.

RULE

Permite criar regras para a tabela ou para a visão (Consulte o comando CREATE RULE ).

REFERENCES

Para criar uma tabela com restrição de chave estrangeira é necessário possuir este privilégio na tabela com a chave referenciada.

TRIGGER

Permite criar gatilhos na tabela especificada (Consulte o comando CREATE TRIGGER).

ALL PRIVILEGES

Concede todos os privilégios mostrados acima de uma só vez. A palavra chave PRIVILEGES é opcional no PostgreSQL, entretanto é requerida pelo SQL estrito.

Os privilégios requeridos pelos outros comandos estão listados nas páginas de referência dos respectivos comandos.

Notas

Deve-se notar que os superusuários do banco de dados podem acessar todos os objetos a despeito dos privilégios definidos. Este comportamento é comparável aos direitos do usuário root no sistema Unix. Assim como o root, não é aconselhável operar como um superusuário, exceto quando for absolutamente necessário.

Atualmente para conceder privilégios somente para algumas colunas deve-se criar uma visão possuindo as colunas desejadas e conceder os privilégios para esta visão.

Use o comando \z do psql para obter informações sobre os privilégios concedidos nos objetos existentes:

          Database    = lusitania
   +------------------+---------------------------------------------+
   |  Relation        |        Grant/Revoke Permissions             |
   +------------------+---------------------------------------------+
   | m