2014-12-30 45 views
16

我知道還有其他threads that are similar,但我不確定它們是否與Postgres相關。用戶和角色之間有什麼區別?

I am reading the PostgreSQL documentation which it reads as follows:

注:如第20章,PostgreSQL的實際執行權限 管理中的 「角色」 的條款。在本章中,我們一直使用 數據庫用戶表示「具有LOGIN特權的角色」。

這是否基本上是指一個角色是數據庫用戶?或者角色和用戶之間有區別嗎?用戶是否有可能沒有完全的權限,而角色是那些始終擁有完整權限的用戶?

+0

[來自手冊](https://www.postgresql.org/docs/current/static/sql-createuser.html)「* CREATE USER現在是CREATE ROLE的別名,唯一的區別是當命令拼寫爲CREATE USER,默認情況下爲LOGIN,而命令拼寫時假定爲NOLOGIN CREATE ROLE *「 –

回答

15

先前版本的Postgres和其他一些DB系統具有單獨的「組」(可以訪問數據庫對象)和「用戶」(可以登錄,並且是一個或多個組的成員)的概念。

在現代版本的Postgres中,這兩個概念已經合併:一個「角色」可以具有登錄能力,能夠從其他角色「繼承」(比如用戶是一個組的成員,或者組是另一個組的成員)以及對數據庫對象的訪問。

爲方便起見,許多工具和手冊都將任何具有登錄權限的用戶稱爲「用戶」或「登錄角色」,並且沒有任何「組」或「組角色」,因爲這是有用的和常見的做法大致保持這種結構。這完全是術語的慣例,爲了理解權限,您只需要瞭解creating rolesgranting them access時可用的選項。

+0

我知道這是一個老問題,但是可以將角色和用戶視爲Unix系統中的用戶和組? – KGCybeX

+1

@KGCybeX「用戶」和「組」的舊概念可以看作與Unix中的相同術語非常相似,並且它是*常規*來保持這種區別。但是,新版本中的「角色」可以像用戶或團體一樣行事 - *或兩者兼而有之 - - 因此這種比喻並沒有那麼有用。更好的比喻是繼承層次結構:您使用角色登錄,並獲得直接授予該角色的任何權限,以及從其他角色繼承的權限,以及這些角色從其他角色繼承的權限等。 – IMSoP

相關問題