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).
Nota: Para mudar o dono de uma tabela, índice, seqüência ou visão deve ser utilizado o comando ALTER TABLE .
Existem vários privilégios diferentes: SELECT, INSERT, UPDATE, DELETE, RULE, REFERENCES, TRIGGER, CREATE, TEMPORARY, EXECUTE, USAGE e ALL PRIVILEGES. 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.
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 pode ser concedido por meio do comando:
GRANT UPDATE ON contas TO joel;
Para executar este comando o usuário deve ser o dono da tabela. 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.