PostgreSQL concedi tutti i privilegi sullo schema all'utente

PostgreSQL concedi tutti i privilegi sullo schema all'utente

I database sono cruciali ed è il lavoro dell'amministratore per controllare quali diversi ruoli possono svolgere gli utenti all'interno di un determinato database. Come parte dell'autorizzazione, l'amministratore può definire le entità utente all'interno del database e concedere o revocare vari privilegi ai ruoli.

In questo modo, si ottiene il controllo su chi può accedere a un database e quali privilegi hanno se possono accedere al database. Ad esempio, è possibile revocare la modifica del database o concedere tutti i privilegi sullo schema a un utente o utenti in una determinata tabella. Questa guida descrive in dettaglio come utilizzare PostgreSQL per concedere a un utente tutti i privilegi sullo schema a un utente.

Come concedere privilegi agli utenti su PostgreSQL

Quando crei un nuovo ruolo, ottengono alcuni privilegi per impostazione predefinita. Tuttavia, la maggior parte dei privilegi richiede all'amministratore di concedere loro a utenti diversi di regolare l'accesso e il controllo di uno schema. Puoi concedere tutti i privilegi contemporaneamente o separatamente.

Per questo tutorial, creiamo un nuovo ruolo di nome Linuxhint1.

$ sudo -iu postgres
# Crea ruolo LinuxHint1 Login Password 'LinuxHint';


Si noti che abbiamo effettuato l'accesso come Postgres, Il ruolo predefinito creato una volta installato PostgreSQL.


Con il ruolo (utente) creato, possiamo elencare i ruoli disponibili utilizzando il comando seguente:

# \ du


I ruoli disponibili verranno visualizzati in formato tabella.


Postgres è il ruolo predefinito e ha già concesso la maggior parte dei privilegi. Tuttavia, il nuovo ruolo, Linuxhint1, non ha privilegi finché non lo concediamo.

Concedere un privilegio specifico a un utente

Il ruolo creato non può modificare lo schema a meno che tu non lo consenta. Verifichiamo questo creando prima una tabella come ruolo predefinito, Postgres.

# Crea nomi di tabelle (m_id int generato sempre come identità, fname vachar (100) non null, lname varchar (100) non null, età int);



È possibile elencare le relazioni disponibili, come mostrato di seguito:


Quindi, apri una nuova shell e accedi a PostgreSQL usando l'altro ruolo, Linuxhint1, che abbiamo creato in precedenza usando il seguente comando:

$ PSQL -U Linuxhint1 -d Postgres



IL -D Specifica che il ruolo è utilizzare il database Postgres.

Prova a leggere il contenuto della tabella che abbiamo creato usando il SELEZIONARE comando.

# Seleziona * dai nomi;


Restituisce a permesso negato Errore che ostacola l'utente dall'accedere alla tabella.


In tal caso, dobbiamo concedere i privilegi di ruolo per selezionare/visualizzare i dati dalla tabella data utilizzando la seguente sintassi:

# Grant privilege_name su table_name a Role_name;


Per concedere i privilegi, utilizzare la sessione di Postgres.


Una volta concesso, prova a eseguire il riemersione del comando precedente.


Questo è tutto. Sei riuscito a concedere il privilegio selezionato all'utente specifico.

Concedere tutti i privilegi sullo schema a un utente

Finora siamo riusciti a concedere solo un privilegio sullo schema a un utente. Bene, non è abbastanza. L'utente non può modificare lo schema a meno che non si conceda tutti i privilegi, come l'inserimento e l'aggiornamento.

Esistono diversi modi per raggiungere questo obiettivo. Innanzitutto, andiamo concedere all'utente tutti i privilegi a una determinata tabella Utilizzando la seguente sintassi:

# Concedi tutto su table_name a Role_name;



L'utente può interagire e modificare la tabella particolare. Tuttavia, non possono lavorare con altri tavoli nello schema.

A concedere tutti i privilegi su tutte le tabelle in un particolare schema, Usa la seguente sintassi:

# Concedi tutto su tutte le tabelle in schema schema_name a Role_name;



Infine, puoi concedere privilegi specifici, come l'inserimento o la selezione di tutte le tabelle sullo schema a un determinato ruolo.

# Grant privilege_name su tutte le tabelle in schema schema_name a Role_name;



Il ruolo può selezionare i dati in tutte le tabelle nello schema specificato. È così che definisci quali privilegi concedere sullo schema a utenti diversi.

Conclusione

PostgreSQL è un potente DBMS. Ha funzionalità diverse, tra cui consentire all'amministratore di concedere vari privilegi agli utenti. Concedere tutti i privilegi sullo schema agli utenti significa consentire all'utente di modificare e interagire con tutte le tabelle nello schema specificato. Abbiamo visto come applicare questo e altri modi di concedere privilegi sullo schema ai ruoli utilizzando la dichiarazione di sovvenzione in Postgresql.