5.7. Privilégios

PostgreSQL 14.5: Privilégios

Quem cria o objeto no banco de dados se torna o seu dono. Por padrão, apenas o dono do objeto pode fazer qualquer coisa com o objeto. Para permitir outros usuários utilizarem o objeto, devem ser concedidos privilégios (entretanto, os usuários que possuem o atributo de superusuário sempre podem acessar qualquer objeto).

Existem vários privilégios diferentes: SELECT, INSERT, UPDATE, DELETE, RULE, REFERENCES, TRIGGER, CREATE, TEMPORARY, EXECUTE e USAGE. Os privilégios aplicáveis a um determinado tipo de objeto variam de acordo com o tipo do objeto (tabela, função, etc.). Para obter informações completas sobre os diferentes tipos de privilégio suportados pelo PostgreSQL, deve ser consultada a página de referência do comando GRANT. As próximas seções e capítulos também mostram como os privilégios são utilizados.

O direito de modificar e destruir um objeto são sempre privilégios exclusivos do seu criador.

Nota: Para mudar o dono de uma tabela, índice, seqüência ou visão deve ser utilizado o comando ALTER TABLE. Existem comandos ALTER correspondentes para outros tipos de objeto.

Para conceder privilégios utiliza-se o comando GRANT. Por exemplo, se joel for um usuário existente, e contas for uma tabela existente, o privilégio de poder atualizar esta tabela poderá ser concedido por meio do comando:

GRANT UPDATE ON contas TO joel;

Para conceder o privilégio para um grupo é utilizada a sintaxe:

GRANT SELECT ON contas TO GROUP contabilidade;

O nome especial de "usuário" PUBLIC pode ser utilizado para conceder privilégios para todos os usuários do sistema. Escrever ALL no lugar do nome específico do privilégio concede todos os privilégios relevantes para o tipo do objeto.

Para revogar um privilégio utiliza-se o comando REVOKE:

REVOKE ALL ON contas FROM PUBLIC;

Os privilégios especiais do dono da tabela (ou seja, os direitos de DROP, GRANT, REVOKE, etc.) são sempre inerentes à condição de ser o dono, não podendo ser concedidos ou revogados. Porém, o dono do objeto pode decidir revogar seus próprios privilégios comuns como, por exemplo, tornar a tabela somente para leitura para o próprio, assim como para os outros.

Normalmente, somente o dono do objeto (ou um superusuário) pode conceder ou revogar privilégios para um objeto. Entretanto, é possível conceder um privilégio "com a opção de concessão", o que dá a quem recebe o direito de conceder o privilégio para outros. Se mais tarde esta opção de concessão for revogada, então todos aqueles que receberam o privilégio a partir desta pessoa (diretamente ou através de uma cadeia de concessões), perderão este privilégio. Para obter mais detalhes consulte as páginas de referência dos comandos GRANT e REVOKE.

SourceForge.net Logo CSS válido!