2015-05-15 58 views
1

在PostgreSQL中,當超級用戶授予任何權限(例如GRANT SELECT ON TABLE表名)時,只有所述SU可以撤消它們。PostgreSQL中其他用戶授予的權限

有什麼辦法可以讓另一位超級用戶撤銷上述贈款嗎?

編輯:這裏是我運行一個簡單的查詢: ALTER DEFAULT PRIVILEGES IN SCHEMA my_schema REVOKE SELECT ON TABLES FROM public CASCADE; 然而,說缺省權限仍顯示當我在看的模式,甚至是在刷新後一切。我用我的超級用戶帳戶和postgres帳戶運行它,都沒有工作。

回答

1

documentation

如果一個超級用戶選擇發出一個GRANT或REVOKE命令,好像它是由受影響的對象的所有者發出執行命令。

所以任何超級用戶都可以撤銷權限,甚至是其他超級用戶授予的權限。

可以使用命令ALTER DEFAULT PRIVILEGES初始特權(在創建對象時分配的特權)設置爲PostgreSQL默認特權以外的特權。但是,運行該命令只會影響(從文檔):

將應用於將來創建的對象的權限。 (它不會影響分配給已存在的對象上的特權。)

改變現有對象的權限需要單獨GRANT S和REVOKE S,雖然你也可以申請喜歡的快捷鍵:

{GRANT | REVOKE} [privileges] ON ALL TABLES IN SCHEMA [schema name]; 

和類似於序列和功能。

+0

這裏是我運行代碼: 'ALTER缺省權限架構中my_schema REVOKE SELECT表上 公共CASCADE;' 然而公衆仍然顯示爲具有選擇上的所有表默認權限。 – Arthur