Comment puis-je accorder le privilège d'utilisation sur tous les types d'un schéma? Pour les tables et les fonctions, nous pouvons utiliser ALL TABLES IN SCHEMA schema_name
, mais ceci n'est pas pris en charge pour les types :
GRANT { USAGE | ALL [ PRIVILEGES ] }
ON TYPE type_name [, ...]
TO role_specification [, ...] [ WITH GRANT OPTION ]
Je sais que je peux définir un privilège par défaut, mais dans ce cas, j'avais déjà installé une extension avec de nombreux types avant de le faire.
Nous pouvons le faire avec SQL et PSQL dynamiques, Sub Out user1
et user2
avec le nom de l'utilisateur. N'hésitez pas à supprimer non plus. Vous pouvez également vouloir seulement DOMAIN
ou USER-DEFINED TYPE
Adapter cela devrait être assez simple.
SELECT format(
$$GRANT USAGE ON TYPE %s TO %s;$$,
format('%I.%I.%I', object_catalog, object_schema, object_name ),
grantUser
)
FROM information_schema.element_types
CROSS JOIN (VALUES ('user1'),('user2')) AS t(grantUser)
WHERE object_type IN ('USER-DEFINED TYPE', 'DOMAIN');
Puis courir
\gexec
Vous pouvez également exécuter ceci dans un bloc do
avec PERFORM