如何授予所有类型的 USAGE 权限?

arj*_*jan 6 postgresql datatypes permissions

如何授予模式中所有类型的 USAGE 权限?对于表和函数,我们可以使用ALL TABLES IN SCHEMA schema_name,但类型不支持

GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON TYPE type_name [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]
Run Code Online (Sandbox Code Playgroud)

我知道我可以设置默认权限,但在这种情况下,我已经安装了许多类型的扩展,然后再这样做。

Eva*_*oll 3

我们可以使用动态 sql 和 psql、Sub outuser1user2用户名来完成此操作。请随意删除。您可能也只需要DOMAINUSER-DEFINED TYPE调整它应该非常简单。

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');
Run Code Online (Sandbox Code Playgroud)

然后运行

\gexec
Run Code Online (Sandbox Code Playgroud)

do您还可以在块中运行它PERFORM