52.28. pg_init_privs #

O catálogo pg_init_privs registra informações sobre os privilégios iniciais dos objetos no sistema. Há uma entrada para cada objeto no banco de dados que possui um conjunto inicial de privilégios não padrão (não NULL).

Os objetos podem ter privilégios iniciais tendo estes privilégios definidos quando o sistema é inicializado (pelo initdb), ou quando o objeto é criado durante CREATE EXTENSION e o script da extensão define privilégios iniciais usando o comando GRANT. Note que o sistema trata automaticamente da aplicação dos privilégios durante o script de extensão, e que os autores da extensão precisam apenas usar as instruções GRANT e REVOKE em seu script para ter os privilégios registrados. A coluna privtype indica se o privilégio inicial foi definido pelo initdb, ou durante um comando CREATE EXTENSION.

Os objetos que possuem privilégios iniciais definidos pelo initdb têm entradas onde privtype é 'i', enquanto os objetos que possuem privilégios iniciais definidos por CREATE EXTENSION têm entradas onde privtype é 'e'.

Tabela 52.28. Colunas de pg_init_privs

Coluna Tipo de dados

Descrição

objoid oid (referencia qualquer coluna OID)

OID do objeto específico

classoid oid (referencia pg_class.oid)

OID do catálogo do sistema em que o objeto se encontra

objsubid int4

Para uma coluna de tabela, este é o número da coluna (o objoid e classoid referem-se à própria tabela). Para todos os outros tipos de objeto, o valor dessa coluna é zero.

privtype char

O código que define o tipo de privilégio inicial desse objeto; veja o texto

initprivs aclitem[]

Os privilégios de acesso iniciais; veja Privilégios para obter detalhes


Exemplo 52.19. Exemplo do tradutor

Privilégios iniciais

Uso do catálogo pg_init_privs para mostrar os privilégios iniciais alterados.

postgres=# GRANT EXECUTE ON FUNCTION pg_catalog.pg_switch_wal() TO ana;
GRANT
postgres=# SELECT
postgres-#     p.proname AS function_name,
postgres-#     i.initprivs AS original_privileges,
postgres-#     p.proacl AS current_privileges
postgres-# FROM pg_init_privs i
postgres-# JOIN pg_proc p ON i.objoid = p.oid
postgres-# WHERE i.initprivs IS DISTINCT FROM p.proacl\gx

-[ RECORD 1 ]-------+-------------------------------------
function_name       | pg_switch_wal
original_privileges | {postgres=X/postgres}
current_privileges  | {postgres=X/postgres,ana=X/postgres}


52.28.1. Veja também #

GRANT, REVOKE