Por padrão, o proprietário de um objeto tem ALL PRIVILEGES nesse objeto, mas não me lembro especificamente se esses privilégios se estendem a permitir que um usuário normal (não super) atinja GRANT
permissões nesse objeto para outros usuários.
Em qualquer caso, você deve ser capaz de conceder essa capacidade a um usuário anexando a cláusula WITH GRANT OPTION
a uma instrução GRANT
. (Eu o encaminho para os documentos para maiores detalhes.)
Por exemplo, em seu cenário hipotético, como superusuário X
, você poderia fazer algo assim:
GRANT ALL PRIVILEGES ON DATABASE database_1 TO A WITH GRANT OPTION;
O usuário A
teria então o poder de GRANT
de permissões em objetos em database_1
para outros usuários. Continuando com o exemplo hipotético, o usuário A
poderia dar permissões específicas ao usuário B
, assim:
GRANT EXECUTE ON FUNCTION function_a(), function_b() TO B;