Postgresql

如何授予所有類型的 USAGE 權限?

  • June 7, 2017

如何授予架構中所有類型的 USAGE 權限?對於我們可以使用的表和函式ALL TABLES IN SCHEMA schema_name,但類型不支持

GRANT { USAGE | ALL [ PRIVILEGES ] }
   ON TYPE type_name [, ...]
   TO role_specification [, ...] [ WITH GRANT OPTION ]

我知道我可以設置預設權限,但在這種情況下,我已經安裝了具有多種類型的擴展,然後再執行此操作。

我們可以使用動態 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');

然後執行

\gexec

您也可以在一個do塊中執行它PERFORM

引用自:https://dba.stackexchange.com/questions/175657