PostgreSQL verleent alle rechten op schema aan de gebruiker

Postgresql Verleent Alle Rechten Op Schema Aan De Gebruiker



Databases zijn cruciaal en het is het werk van de beheerder om te bepalen welke verschillende rollen de gebruikers binnen een bepaalde database kunnen vervullen. Als onderdeel van de autorisatie kan de beheerder gebruikersentiteiten binnen de database definiëren en verschillende bevoegdheden aan de rollen toekennen of intrekken.

Op die manier krijg je controle over wie toegang heeft tot een database en welke rechten ze hebben als ze toegang hebben tot de database. U kunt bijvoorbeeld de databasewijziging intrekken of alle rechten op het schema toekennen aan een gebruiker of gebruikers in een bepaalde tabel. In deze handleiding wordt beschreven hoe u PostgreSQL kunt gebruiken om een ​​gebruiker alle rechten op het schema aan een gebruiker te verlenen.







Hoe rechten te verlenen aan gebruikers op PostgreSQL

Wanneer u een nieuwe rol aanmaakt, krijgen ze standaard enkele rechten. De meeste rechten vereisen echter dat de beheerder ze aan verschillende gebruikers toekent om de toegang tot en het beheer van een schema te regelen. U kunt alle rechten in één keer of afzonderlijk toekennen.



Laten we voor deze zelfstudie een nieuw maken rol genaamd linuxhint1 .



$ sudo -iu postgres
# maak rol linuxhint1 inlogwachtwoord 'linuxhint';


Merk op dat we zijn ingelogd als postgres, de standaardrol die wordt gemaakt nadat u PostgreSQL hebt geïnstalleerd.






Nu de rol (gebruiker) is gemaakt, kunnen we de beschikbare rollen weergeven met behulp van de volgende opdracht:

# \ van


De beschikbare rollen worden in tabelvorm weergegeven.




Postgres is de standaardrol en heeft de meeste rechten al verleend. Maar de nieuwe rol linuxhint1, heeft geen privileges totdat we het verlenen.

1. Een specifiek recht toekennen aan een gebruiker

De gemaakte rol kan het schema niet wijzigen tenzij u dit toestaat. Laten we dit verifiëren door eerst een tabel te maken als de standaardrol, postgres.

# tabelnamen maken ( m_id int wordt altijd gegenereerd net zo identiteit, voornaam vachar ( 100 ) niet null, lname varchar ( 100 ) niet null, leeftijd int ) ;



U kunt de beschikbare relaties opsommen, zoals hieronder weergegeven:


Open vervolgens een nieuwe shell en log in op PostgreSQL met de andere rol, linuxhint1, die we eerder hebben gemaakt met behulp van de volgende opdracht:

$ psql -IN linuxhint1 -d postgres



De -d geeft aan dat de rol is om de Postgres-database te gebruiken.

Probeer de inhoud van de tabel te lezen die we hebben gemaakt met behulp van de SELECTEER opdracht.

# SELECTEER * VAN namen;


Het retourneert een geen toestemming fout waardoor de gebruiker geen toegang heeft tot de tabel.


In een dergelijk geval moeten we de rolprivileges toekennen om gegevens uit de gegeven tabel te selecteren/bekijken met behulp van de volgende syntaxis:

# GRANT privilege_name OP table_name TO role_name;


Gebruik de Postgres-sessie om de rechten te verlenen.


Probeer na toekenning de vorige opdracht opnieuw uit te voeren.


Dat is het. U bent erin geslaagd om het select-privilege aan de specifieke gebruiker te verlenen.

2. Alle privileges op Schema toekennen aan een gebruiker

Tot nu toe zijn we erin geslaagd om slechts één privilege op schema aan een gebruiker toe te kennen. Nou, dat is niet genoeg. De gebruiker kan het schema niet wijzigen tenzij u het alle rechten verleent, zoals invoegen en bijwerken.

Er zijn verschillende manieren om dit te bereiken. Laten we eerst de gebruiker alle rechten verlenen voor een bepaalde tabel met behulp van de volgende syntaxis:

# VERLEEN ALLES OP tafelnaam AAN rolnaam;



De gebruiker kan communiceren met de specifieke tabel en deze wijzigen. Ze kunnen echter niet werken met andere tabellen in het schema.

Tot alle rechten verlenen op alle tabellen in een bepaald schema , gebruik de volgende syntaxis:

# VERLEEN ALLES OP ALLE TABELLEN IN SCHEMA schema_name TO role_name;



Als laatste kan dat specifieke rechten toekennen, zoals het invoegen of selecteren van alle tabellen in het schema voor een bepaalde rol .

# VERLEEN privilege_name OP ALLE TABELLEN IN SCHEMA schema_name TO role_name;



De rol kan gegevens selecteren in alle tabellen in het opgegeven schema. Zo definieert u welke rechten u op het schema aan verschillende gebruikers wilt toekennen.

Conclusie

PostgreSQL is een krachtig DBMS. Het heeft verschillende functies, waaronder de mogelijkheid voor de beheerder om verschillende rechten aan gebruikers te verlenen. Alle rechten voor het schema aan gebruikers toekennen betekent dat de gebruiker alle tabellen in het opgegeven schema kan wijzigen en ermee kan werken. We hebben gezien hoe we dat kunnen toepassen en andere manieren om privileges op het schema toe te kennen aan rollen met behulp van de GRANT-instructie in PostgreSQL.