it-swarm.com.de

PostgreSQL-Rollen im Vergleich zu Benutzern gewähren Berechtigungen

Ich lerne gerade die Unterschiede zwischen PostgreSQL und MySQL, da ich ein neues Projekt habe und beabsichtige, meine vorhandene Software von MySQL auf PostgreSQL zu migrieren. Ich habe tatsächlich begonnen, eine HTML-Tabelle mit einem Vergleich der Befehle (für Benutzer/Datenbanken/Eingabeaufforderung usw.) zwischen den beiden zu erstellen. Nach eine Antwort lesen hier habe ich bemerkt, dass role als Gruppe verwendet zu werden scheint. Mit MySQL habe ich zwei Benutzer, im Grunde öffentliche (DELETE, INSERT, SELECT und UPDATE Berechtigungen) und einen Administrator mit ein paar zusätzlichen Berechtigungen.

Also im Grunde in der Windows 7-Eingabeaufforderung (nur lokale Entwicklung) ...

  • Ist eine Rolle ein Benutzer, eine Gruppe oder ein lose verwendeter Begriff, der für PostgreSQL spezifisch ist?
  • Wie erteile ich einem bestimmten Benutzer nur spezifische Berechtigungen für alle Tabellen in einer Datenbank?
  • Wie erteile ich einem bestimmten Benutzer alle Berechtigungen für alle Tabellen in einer Datenbank?
  • Wie vergleicht sich eine Rolle, wenn überhaupt, mit einem Benutzer, wenn GRANT oder REVOKE für Benutzerberechtigungen verwendet werden?
31
John

Eine Rolle ist eine Entität, die als Benutzer und/oder als Gruppe fungieren kann. Eine Rolle WITH LOGIN kann als Benutzer verwendet werden, d. h. Sie können sich damit anmelden. Jede Rolle kann als Gruppe fungieren, einschließlich Rollen, unter denen Sie sich auch anmelden können. "Benutzer" und "Gruppe" sind also im Wesentlichen Begriffe, die die beabsichtigte Verwendung einer Rolle angeben. Es gibt keinen wirklichen Unterschied zwischen ihnen. Selbst in der PostgreSQL-Variante von SQL werden die beiden mehr oder weniger als Synonyme verwendet. Zum Beispiel die Dokumentation zu CREATE USER sagt:

CREATE USER ist jetzt ein Alias ​​für CREATE ROLE.

Alle gewähren ... siehe Handbuch für GRANT . Sie möchten wahrscheinlich tatsächlich Rechte an ALL TABLES IN SCHEMA public anstatt alle Tabellen in der Datenbank.

Einige Rechte gewähren ... dasselbe, aber anstelle von GRANT ALL verwenden GRANT SELECT, INSERT beispielsweise. Siehe auch hier das Handbuch.

Eine Rolle ist ein Benutzer und/oder eine Gruppe. Sie können nur Rollen gewähren, da nur Rollen vorhanden sind.

53
Craig Ringer