Quem cria o objeto no banco de dados se torna seu dono. Por padrão, apenas o dono do objeto pode realizar alguma operação com o objeto. Para permitir outros usuários utilizarem o objeto, devem ser concedidos privilégios (existem usuários que possuem o privilégio de superusuário, os quais 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 muitos privilégios diferentes: SELECT, INSERT, UPDATE, DELETE, RULE, REFERENCES, TRIGGER, CREATE, TEMPORARY, EXECUTE, USAGE e ALL PRIVILEGES. Para obter informações completas relativas aos 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 a utilização dos privilégios.
O direito de modificar e destruir objetos são exclusivos do seu criador.
Para conceder privilégios é utilizado o comando GRANT. Portanto, se joel é um usuário existente, e contas é 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 privilégios para um grupo deve ser utilizado o comando:
GRANT SELECT ON contas TO GROUP faturamento;
O nome especial de "usuário" chamado PUBLIC pode ser utilizado para conceder privilégios para todos os usuários do sistema. Escrevendo-se ALL no lugar do nome específico do privilégio causa a concessão de todos os privilégios.
Para revogar um privilégio deve ser utilizado 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 inerentes à situação de ser o dono, não podendo ser concedidos ou revogados. Porém, o dono da tabela pode decidir revogar seus próprios privilégios como, por exemplo, permitir apenas leitura na tabela para o próprio e para os outros.