Postgresql

我可以對數據庫中的所有模式進行 GRANT SELECT 嗎?

  • December 20, 2021

我需要創建只能讀取(選擇)數據的角色使用者。我可以為特定的模式做到這一點。但我需要它來處理所有現有和未來的模式(至少現有的)。我該怎麼做?

我試過了

GRANT select ON DATABASE my_db TO my_role;

但它說我不能:

0LP01 無效授權操作

ps:我需要授予對數據庫中所有模式的選擇權限,我只是嘗試使用查詢中的數據庫作為選項來執行此操作,但是如果您知道如何為孔數據庫的選擇授予角色權限,我’我也很高興看到

您可以等待 PostgsqlSQL v14 及其pg_read_all_data係統角色。

除此之外,您必須單獨授予USAGE所有模式和SELECT所有表。

GRANT SELECT ON ALL TABLES IN SCHEMA將使這項工作更容易。

我的建議是不要向最終使用者角色頒發所有這些授權,而是向中間角色頒發,然後您將其授予最終使用者。這樣就很容易掉線了qaread

您必須手動或使用腳本為每個現有架構設置權限以加快速度。如果沒有太多的模式,比如

GRANT USAGE ON SCHEMA schemaX to myrole; GRANT SELECT ON ALL TABLES IN SCHEMA schemaX to myrole;

效率很高。

要處理未來的模式和表,請使用: ALTER DEFAULT PRIVILEGES GRANT USAGE ON SCHEMAS to [YOUR_ROLE or YOUR_USER];

ALTER DEFAULT PRIVILEGES GRANT SELECT ON TABLES to [YOUR_ROLE or YOUR_USER];

確保以模式的創建使用者身份執行該語句,或指定ALTER DEFAULT PRIVILEGES FOR ROLE creating_role. 完整的解釋可以在https://dba.stackexchange.com/a/265185/245068

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