我可以對數據庫中的所有模式進行 GRANT SELECT 嗎?
我需要創建只能讀取(選擇)數據的角色使用者。我可以為特定的模式做到這一點。但我需要它來處理所有現有和未來的模式(至少現有的)。我該怎麼做?
我試過了
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