Postgresql

向所有(動態)模式中的表授予權限

  • December 20, 2021

我們已經設置了一個 AWS Database Migration Service,它可以從多個來源遷移架構和表。

從源遷移的規則可以是模式上的萬用字元,這意味著模式可以在源中創建時任意“彈出”。

從我在 PostgreSQL 中看到的所有不同的權限授予來看,似乎都指定了一個特定的模式,或者循環遍歷每個現有的模式。

有沒有辦法為給定數據庫中的每個目前和未來模式授予某些特權?

理想情況下,這樣的事情會很棒:

ALTER DEFAULT PRIVILEGES FOR ROLE my_role IN SCHEMA "*" GRANT SELECT ON TABLES TO my_role;

我知道可以將 super_user 角色授予使用者以實現這一點,但這對於應該只有讀取權限的人來說似乎非常骯髒。

感謝幫助。

只需省略 IN SCHEMA 子句,它適用於所有模式,因此不需要模式的萬用字元功能。

ALTER DEFAULT PRIVILEGES FOR ROLE my_role GRANT SELECT ON TABLES TO my_role;

您真正的問題可能是 FOR ROLE 子句。以上內容有點無用,因為它僅適用於 my_role 創建的表(在任何模式中)。但是表的創建者自動擁有選擇權限,所以這沒有任何用處。您的 FOR ROLE 子句需要指定誰將創建表(如果省略它,則表示目前使用者)。如果您有多個這樣的創建角色,您別無選擇,只能為每個角色重複 ALTER DEFAULT PRIVILEGES。這是真正需要萬用字元功能的地方,但遺憾的是不存在。

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