2014-12-30 8 views
16

Ich weiß, es gibt andere threads that are similar, aber ich bin mir nicht sicher, ob sie für Postgres relevant sind.Was ist der Unterschied zwischen einem Benutzer und einer Rolle?

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

Anmerkung: Wie in Kapitel 20 erläutert, PostgreSQL funktioniert tatsächlich Management Privileg in Bezug auf die "Rollen". In diesem Kapitel verwenden wir konsequent den Datenbankbenutzer als "Rolle mit dem LOGIN-Privileg".

Bedeutet dies im Grunde eine Rolle ist ein Datenbankbenutzer? Oder gibt es einen Unterschied zwischen einer Rolle und einem Benutzer? Haben Benutzer die Möglichkeit, keine vollständigen Berechtigungen zu erhalten, während Rollen Benutzer sind, die immer volle Berechtigungen haben?

+0

[Aus dem Handbuch] (https://www.postgresql.org/docs/current/static/sql-createuser.html) "* CREATE USER ist jetzt ein Alias ​​für CREATE ROLE. Der einzige Unterschied ist, dass wenn der Befehl wird buchstabiert CREATE USER, LOGIN wird standardmäßig angenommen, während NOLOGIN angenommen wird, wenn der Befehl buchstabiert wird CREATE ROLE * " –

Antwort

15

Frühere Versionen von Postgres und einige andere DB-Systeme haben separate Konzepte von "Gruppen" (denen Zugriff auf Datenbankobjekte gewährt wird) und "Benutzer" (die sich anmelden können und Mitglied einer oder mehrerer Gruppen sind).

In modernen Versionen von Postgres wurden die beiden Konzepte zusammengeführt: Eine "Rolle" kann sich anmelden, die Fähigkeit, von anderen Rollen zu "erben" (wie ein Benutzer einer Gruppe angehört) Gruppe, die Mitglied einer anderen Gruppe ist) und Zugriff auf Datenbankobjekte.

Aus praktischen Gründen beziehen sich viele Tools und Handbücher auf jeden Benutzer mit Anmeldeberechtigung als "Benutzer" oder "Login-Rolle" und alle ohne als "Gruppe" oder "Gruppenrolle", da dies nützlich und allgemein üblich ist um ungefähr in dieser Struktur zu bleiben. Dies ist völlig eine Konvention der Terminologie, und um die Berechtigungen zu verstehen, müssen Sie nur die verfügbaren Optionen verstehen, wenn creating roles und granting them access.

+0

Ich weiß, dass dies eine alte Frage ist, aber können Rollen und Benutzer als Benutzer und Gruppen wie in Unix-Systemen gesehen werden? – KGCybeX

+1

@KGCybeX Das ältere Konzept von "Benutzern" und "Gruppen" kann den gleichen Begriffen in Unix sehr ähnlich gesehen werden, und es ist * konventionell *, diese Unterscheidung beizubehalten. Aber eine "Rolle" in neueren Versionen kann sich entweder wie ein Benutzer oder eine Gruppe - * oder beides - verhalten - also ist die Analogie nicht so nützlich. Eine bessere Analogie ist eine Vererbungshierarchie: Sie melden sich mit einer Rolle an und erhalten alle Berechtigungen, die dieser Rolle direkt erteilt werden, sowie Berechtigungen, die sie von anderen Rollen erbt, sowie Berechtigungen, die diese Rollen von anderen Rollen erben usw. – IMSoP

Verwandte Themen