Documentação do PostgreSQL 8.0.0 | ||||
---|---|---|---|---|
Anterior | Início | Capítulo 17. Usuários do banco de dados e privilégios | Fim | Próxima |
Quando um objeto do banco de dados é criado, é atribuído um dono ao mesmo. O dono é o usuário que executou o comando de criação. Para mudar o dono de uma tabela, índice, seqüência ou visão deve ser utilizado o comando ALTER TABLE. Por padrão, somente o dono (ou um superusuário) pode fazer qualquer coisa com o objeto. Para permitir o uso por outros usuários, devem ser concedidos privilégios.
Existem vários privilégios distintos: SELECT, INSERT, UPDATE, DELETE, RULE, REFERENCES, TRIGGER, CREATE, TEMPORARY, EXECUTE, USAGE e ALL PRIVILEGES. Para obter mais informações sobre os diferentes tipos de privilégio suportados pelo PostgreSQL deve ser consultada a página de referência do comando GRANT. O direito de modificar ou remover um objeto é sempre um privilégio apenas de seu dono. É utilizado o comando GRANT para conceder privilégios. Portanto, se joel for um usuário existente, e tbl_contas for uma tabela existente, o privilégio de atualizar a tabela poderá ser concedido pelo comando:
GRANT UPDATE ON tbl_contas TO joel;
Este comando deve ser executado pelo usuário dono da tabela. Para conceder privilégios para um grupo deve ser utilizado o comando:
GRANT SELECT ON tbl_contas TO GROUP grp_financas;
O nome especial de "usuário" PUBLIC pode ser utilizado para conceder o privilégio para todos os usuários do sistema. Escrevendo ALL no lugar do privilégio especifica a concessão de todos os privilégios.
Para revogar um privilégio deve ser utilizado o comando REVOKE:
REVOKE ALL ON tbl_contas FROM PUBLIC;
Os privilégios especiais do dono da tabela (ou seja, o direito de DROP (remover), GRANT (conceder), REVOKE (revogar), etc.) são sempre implícitos ao fato de ser o dono, não podendo ser concedidos ou revogados. Mas o dono da tabela pode decidir revogar seus próprios privilégios comuns como, por exemplo, tornando uma tabela somente para leitura para o próprio e para os outros.