Gewähren Sie dem Benutzer in PostgreSQL Berechtigungen

Bilal Shahid 15 Februar 2024
  1. Kurze Einführung in Privilegien in PostgreSQL
  2. Verwendung des Schlüsselworts GRANT in PostgreSQL
Gewähren Sie dem Benutzer in PostgreSQL Berechtigungen

In PostgreSQL haben alle Datenbankobjekte, wie z. B. eine Tabelle oder eine Ansicht, einen Besitzer. Der Eigentümer ist normalerweise der Benutzer, der das Objekt erstellt hat.

Folglich hat nur der Eigentümer das Recht, von ihm erstellte Objekte zu ändern oder zu löschen, und kein anderer Benutzer kann dies standardmäßig tun. Wenn der Eigentümer einem anderen Benutzer erlauben möchte, bestimmte Aktionen an seinem Objekt auszuführen, muss er ihm die Berechtigungen erteilen.

In diesem Tutorial zeigen wir, wie ein Eigentümer einem anderen Benutzer in PostgreSQL alle Berechtigungen erteilen kann. Beginnen wir mit den Grundlagen und lernen, was Privilegien sind.

Kurze Einführung in Privilegien in PostgreSQL

Privilegien sind Berechtigungen, die sich auf bestimmte Datenbankobjekte beziehen. In PostgreSQL haben wir die folgenden Arten von Berechtigungen:

Berechtigungsname Berechtigungsbeschreibung
SELECT Auswahl eines beliebigen Werts aus Spalten eines tabellenähnlichen Objekts zulassen
INSERT Einfügen einer Datenzeile in die Tabelle zulassen
UPDATE Ermöglicht die Änderung bereits vorhandener Daten in der Tabelle
DELETE Ermöglicht das Löschen bereits vorhandener Daten in der Tabelle
TRUNCATE Ermöglicht das Hinzufügen/Anhängen einer Zeile in die Tabelle
REFERENCES Ermöglicht das Referenzieren von Fremdschlüsseln in der Tabelle
TRIGGER Ermöglicht das Erstellen von Auslösern für ein Ereignis
CREATE Ermöglicht die Erstellung verschiedener Objekte innerhalb einer Datenbank
CONNECT Ermöglicht den Aufbau von Verbindungen mit den Datenbankservern
TEMPORARY Ermöglicht die Deklaration temporärer Objekte
EXECUTE Ermöglicht die Ausführung von Abfragen innerhalb einer Datenbank
USAGE Definieren der Verwendung von Objekten innerhalb der Datenbank

Hinweis: Es ist nicht möglich, einem Benutzer das Recht zu erteilen, ein Objekt zu DROPEN oder seine Definition zu ändern.

Alle diese Berechtigungen stellen verschiedene Aktionen dar, die ein Benutzer in einer Datenbank ausführen kann. Beispielsweise kann ein Benutzer eine Tabelle in einer bestimmten Datenbank nicht ERSTELLEN, wenn das Privileg ERSTELLEN nicht gewährt wurde.

Wie also gewährt man einem Benutzer alle Privilegien? Lassen Sie uns beispielsweise einen temporären Benutzer erstellen, indem Sie den folgenden Befehl ausführen:

CREATE USER myuser WITH PASSWORD 'password';

Als nächstes erstellen wir eine Beispieltabelle und füllen sie mit einigen Daten:

create table person(
    name varchar(30) not null,
    age int not null
);

insert into person values ('Ali', 20), ('Fatima', 19), ('Hassan', 22);

Gewähren Sie dem Benutzer in postgresql Berechtigungen - geben Sie eins aus

Alle Privilegien werden einem Benutzer mit dem Schlüsselwort GRANT erteilt, das unten erklärt wird.

Verwendung des Schlüsselworts GRANT in PostgreSQL

Die grundlegende Syntax des Schlüsselworts GRANT lautet wie folgt:

GRANT privilege
ON object
TO {PUBLIC | GROUP group | username}

Schauen wir uns jede Komponente der Syntax einzeln an:

  • privilege - Hier schreiben wir die Privilegien, die wir dem Benutzer gewähren möchten. In unserem Fall schreiben wir ALLE PRIVILEGES, da wir lernen, wie man alle Privilegien gewährt.
  • Objekt – Ein Datenbankobjekt umfasst, ist aber nicht beschränkt auf, eine Tabelle, eine Ansicht, eine Sequenz, eine Datenbank, eine Funktion, eine Prozedur oder ein Schema.
  • PUBLIC - Wenn wir dieses Schlüsselwort schreiben, gewähren wir allen Benutzern in allen Rollen und Gruppen die Berechtigung(en).
  • GROUP – Eine Gruppe ist eine Art Rolle in PostgreSQL. Eine Rolle kann eine Gruppe oder ein einzelner Benutzer sein, der ein Datenbankobjekt besitzt. Wir können einer Gruppe in PostgreSQL alle Privilegien erteilen, indem wir ihren Namen angeben.
  • Benutzername - Wenn wir einem einzelnen Benutzer alle Privilegien gewähren möchten, schreiben wir hier seinen Benutzernamen.

Wir werden die Verwendung dieser Syntax nun anhand eines Beispiels demonstrieren. Angenommen, wir möchten myuser alle Privilegien gewähren, die oben auf unserer definierten Tabelle person erstellt wurden.

Dazu können wir die folgende Abfrage ausführen:

GRANT ALL PRIVILEGES ON person TO myuser;

Die Ausgabe zeigt den folgenden Text:

Gewähren Sie dem Benutzer in postgresql Berechtigungen - Ausgabe zwei

Dies bedeutet, dass die angegebene(n) Berechtigung(en) erfolgreich gewährt wurden. In PostgreSQL ist es optional, PRIVILEGES wie in der obigen Abfrage geschrieben zu schreiben. Daher ist eine Alternative:

GRANT ALL ON person TO myuser;

Es funktioniert auch auf die gleiche Weise. In ähnlicher Weise können wir auch andere Datenbankobjekte erstellen und einem Benutzer alle Berechtigungen für sie erteilen. Lassen Sie uns als Beispiel eine Beispielprozedur erstellen:

create procedure just_an_example()
language plpgsql
as $$
begin
select * from person;
end; $$

Jetzt können wir die unten angegebene Abfrage ausführen, um myuser alle Privilegien darauf zu gewähren:

GRANT ALL PRIVILEGES ON PROCEDURE just_an_example() TO myuser;

Es wird erfolgreich erteilt:

Gewähren Sie dem Benutzer in postgresql Berechtigungen - Ausgabe zwei

Wir können auch die WITH GRANT OPTION hinzufügen, während wir alle Privilegien gewähren. Dies bedeutet, dass der Benutzer jetzt auch die Berechtigung hat, anderen Benutzern Berechtigungen zu erteilen. Zum Beispiel:

GRANT ALL PRIVILEGES ON PROCEDURE just_an_example() TO myuser WITH GRANT OPTION;

Nachdem diese Abfrage ausgeführt wurde, darf myuser jedem beliebigen Benutzer weitere Privilegien erteilen, die zunächst nur dem Besitzer von just_an_example() zustehen.

Die Methode, die wir oben erklärt haben, beinhaltet das direkte Gewähren aller Privilegien an den Benutzer. Ein besserer Ansatz besteht jedoch darin, einer Gruppe alle Berechtigungen zu erteilen und den Benutzer zu einem Mitglied zu machen.

Diese Technik ist besser, da sie hilft, Berechtigungen zu organisieren oder sie sogar zu widerrufen, wenn es um mehrere Benutzer geht. Lassen Sie uns sehen, wie das gemacht wird.

Zunächst erstellen wir eine Gruppe auf folgende Weise:

CREATE GROUP mygroup;

Es wird erfolgreich erstellt, wie in der folgenden Ausgabe gezeigt:

Gewähren Sie dem Benutzer in postgresql Berechtigungen - Ausgabe drei

Jetzt werden wir der Gruppe mygroup alle Privilegien auf unserer Tabelle person gewähren, indem wir die folgende Abfrage verwenden:

GRANT ALL PRIVILEGES ON person TO mygroup;

Die Ausgabe zeigt, dass wir die Privilegien erfolgreich gewährt haben:

Gewähren Sie dem Benutzer in postgresql Berechtigungen - Ausgabe zwei

Als nächstes fügen wir myuser als Mitglied von mygroup hinzu, indem wir die folgende Syntax verwenden:

GRANT mygroup TO myuser;

Es gibt die folgende Ausgabe aus, die die Mitgliedschaft bestätigt:

Gewähren Sie dem Benutzer in postgresql Berechtigungen - Ausgabe vier

Auf diese Weise haben wir der Gruppe mygroup alle Privilegien auf der Tabelle person gewährt, und da myuser ein Teil von mygroup ist, haben sie auch alle Privilegien auf person.

Es fasst unsere Diskussion darüber zusammen, wie einem Benutzer in PostgreSQL alle Berechtigungen für ein Datenbankobjekt gewährt werden. Wir hoffen, Sie haben die Verwendung und Syntax des Schlüsselworts GRANT und die verschiedenen Methoden gelernt, die wir verwenden können, um einem Benutzer alle Privilegien zu gewähren.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub