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);
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 wirALLE 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 seinenBenutzernamen
.
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:
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:
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:
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:
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:
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.
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