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)
我知道我可以设置默认权限,但在这种情况下,我已经安装了许多类型的扩展,然后再这样做。
我们可以使用动态 sql 和 psql、Sub outuser1
和user2
用户名来完成此操作。请随意删除。您可能也只需要DOMAIN
或USER-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