2011-12-13 79 views
21

the PostgreSQL docs爲什麼PostgreSQL將用戶和組合併成角色?

角色的概念是包含「用戶」和「組」的概念。在8.1之前的PostgreSQL版本中,用戶和組在 之間是不同的實體,但現在只有角色。任何角色都可以充當用戶,一個組或兩者兼而有之。

他們爲什麼在8.1中做這個改變?

從C編碼器的角度來看,使用單個Role類(struct)也許更容易?

More details

CREATE USER is equivalent to CREATE ROLE except that CREATE USER給LOGIN權限給用戶/角色

(我要設計一個系統的權限爲我的web應用程序,因此我很感興趣。)

回答

27

合併有許多優點和缺點。例如,您現在可以通過添加/刪除LOGIN權限,將「用戶」無縫轉換爲「組」,反之亦然。

ALTER ROLE myrole LOGIN; 
ALTER ROLE myrole NOLOGIN; 

或者你可以GRANT成員的任何其它登錄( 「用戶」),或者非登錄的角色( 「本集團」)的角色:

GRANT joe TO sue; 

您仍然可以:

​​

現在這只是一個role with login privilege。或者:

CREATE GROUP workers; 

現在有效the same as CREATE ROLE

manual有這一切。

3

manual

SQL標準定義了用戶的概念,角色,但它將它們視爲不同的概念,並保留所有命令定義 用戶由每個數據庫實現指定。在PostgreSQL 中,我們選擇將用戶和角色統一爲單一類型的實體。 角色因此具有比 標準更多的可選屬性。

+2

這並沒有真正回答*爲什麼*雖然... –

+0

這是你應該問的黑客誰做的,而不是像SO這樣的論壇。 –

+0

夠公平的:)只是說這就是我讀的問題。 –

3

區分用戶和組並不會帶來任何好處。

AFAIK動機要改變它是簡化等用途:

  • 一個用戶僞裝成另一個,例如超級用戶模擬降低權限用戶。通過統一角色,這只是當前角色的另一個變化,與更改主要組無關。

  • 作爲其他組成員的組來實現粒度訪問權限的組。

如果你想要的細節,不過,你最好檢查出的pgsql-hackers list中期間的檔案,並提交歷史(從CVS轉換)。

+0

感謝您提供pgsql-hacker列表的存檔。我找到了相關的線索,併爲此問題添加了另一個答案。 – KajMagnus

5

我發現this thread in the PostgreSQL-Hackers list,從2003年6月6日,最終表明,用戶和組和角色進行合併。 (感謝克雷格林格建議我檢查pgsql-黑客列表檔案。)

這裏提到的一些好處(我發現的)。

允許組具有組作爲成員

的ACL代碼將被簡化

的賦予/撤消語法和ACL列表的顯示格式可以是 簡化,因爲會是沒有對於 ,需要一個語法標記,無論給定的名稱是用戶還是組。

在某些情況下,我可以看到它決策意識,使記錄在 直接作爲一組/角色/ whatchacallit

這也將解決INFORMATION_SCHEMA視圖將 只顯示所擁有的對象

問題[使得它更容易]授予集團[因爲 你會簡單地重用角色相關的代碼代表的特權?]

相關問題