In diesem Schritt erstellen Sie einen Benutzer und gewähren ihm die Mitgliedschaft in der reporting_role, um die Privilegien zu testen.
-
Verbindung zum PostgreSQL-Server herstellen:
Verbinden Sie sich mit dem PostgreSQL-Server über das psql-Kommandozeilen-Tool als postgres-Benutzer.
sudo -u postgres psql
-
Verbindung zur Datenbank reporting_db herstellen:
Verbinden Sie sich mit der Datenbank reporting_db:
\c reporting_db
-
Einen Benutzer erstellen und die Mitgliedschaft zur reporting_role gewähren:
Erstellen wir einen neuen Benutzer namens report_user. Anschließend gewähren wir diesem Benutzer die Mitgliedschaft in der reporting_role. Das bedeutet, dass report_user die Privilegien erbt, die der reporting_role gewährt wurden.
CREATE USER report_user;
GRANT reporting_role TO report_user;
Sie sollten die folgende Ausgabe sehen:
CREATE ROLE
GRANT ROLE
-
PostgreSQL für passwortlose Authentifizierung konfigurieren:
Standardmäßig verwendet PostgreSQL die peer-Authentifizierung, was in diesem Lab zu Verbindungsproblemen führen kann. Wir ändern sie zu trust, um den Zugriff für den report_user zu vereinfachen.
Beenden Sie zuerst die psql-Shell:
\q
Ändern Sie nun die Datei pg_hba.conf, um die Authentifizierungsmethode zu ändern. Der untenstehende sed-Befehl sichert die Originaldatei als pg_hba.conf.bak und ersetzt peer durch trust für lokale Verbindungen.
sudo sed -i.bak 's/^local\s\+all\s\+all\s\+peer/local all all trust/' /etc/postgresql/14/main/pg_hba.conf
Laden Sie PostgreSQL neu, um die Änderungen anzuwenden:
sudo service postgresql reload
-
Daten in die Tabelle sales_data einfügen:
Verbinden Sie sich erneut als postgres-Benutzer mit der Datenbank.
sudo -u postgres psql -d reporting_db
Fügen Sie einige Beispieldaten in die Tabelle sales_data zu Testzwecken ein.
INSERT INTO sales_data (product, amount) VALUES ('Laptop', 1200.00), ('Mouse', 25.00), ('Keyboard', 75.00);
Sie sollten die folgende Ausgabe sehen:
INSERT 0 3
Verlassen Sie die psql-Shell.
\q
-
Verbindung zur Datenbank reporting_db als report_user herstellen:
Öffnen Sie ein neues Terminalfenster und verwenden Sie den folgenden Befehl:
psql -d reporting_db -U report_user
Sie werden ohne Passwortabfrage als report_user mit der Datenbank verbunden.
-
Privilegien testen:
Versuchen Sie nun, Daten aus der Tabelle sales_data auszuwählen:
SELECT * FROM sales_data;
Sie sollten die von Ihnen eingefügten Daten sehen:
id | product | amount
----+----------+--------
1 | Laptop | 1200.00
2 | Mouse | 25.00
3 | Keyboard | 75.00
(3 rows)
Wenn Sie diese Ausgabe sehen, bedeutet dies, dass der report_user die SELECT-Berechtigung für die Tabelle sales_data besitzt, die über die reporting_role gewährt wurde.
Verlassen Sie die psql-Shell.
\q