I database sono fondamentali ed è compito dell'amministratore controllare quali diversi ruoli possono svolgere gli utenti all'interno di un determinato database. Come parte dell'autorizzazione, l'amministratore può definire entità utente all'interno del database e concedere o revocare vari privilegi ai ruoli.
In questo modo, ottieni il controllo su chi può accedere a un database e quali privilegi hanno se possono accedere al database. Ad esempio, puoi revocare la modifica del database o concedere tutti i privilegi sullo schema a uno o più 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 che l'amministratore li conceda a utenti diversi per regolare l'accesso e il controllo di uno schema. Puoi concedere tutti i privilegi contemporaneamente o separatamente.
Per questo tutorial, creiamo un nuovo file ruolo di nome linuxhint1 .
$ sudo -io postgres
# crea ruolo linuxhint1 login password 'linuxhint';
Tieni presente 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 usando il seguente comando:
I ruoli disponibili verranno visualizzati in un formato di tabella.
Postgres è il ruolo predefinito e ha la maggior parte dei privilegi già concessi. Tuttavia, il nuovo ruolo, linuxhint1, non ha privilegi finché non glielo concediamo.
1. Concessione di un privilegio specifico a un utente
Il ruolo creato non può modificare lo schema a meno che tu non lo consenta. Verifichiamolo creando prima una tabella come ruolo predefinito, postgres.
# creare nomi di tabelle ( m_id int generato sempre come identità, nome vachar ( 100 ) non nullo, lname varchar ( 100 ) non nullo, età int ) ;
È possibile elencare le relazioni disponibili, come mostrato di seguito:
Successivamente, apri una nuova shell e accedi a PostgreSQL utilizzando l'altro ruolo, linuxhint1, che abbiamo creato in precedenza utilizzando il seguente comando:
Il -d specifica che il ruolo consiste nell'utilizzare il database Postgres.
Prova a leggere il contenuto della tabella che abbiamo creato utilizzando il file SELEZIONARE comando.
# SELEZIONARE * A PARTIRE DAL nomi;
Restituisce un permesso negato errore che impedisce all'utente di accedere alla tabella.
In tal caso, dobbiamo concedere al ruolo i privilegi per selezionare/visualizzare i dati dalla tabella data utilizzando la seguente sintassi:
Per concedere i privilegi, utilizzare la sessione Postgres.
Una volta concesso, prova a eseguire nuovamente il comando precedente.
Questo è tutto. Sei riuscito a concedere il privilegio di selezione all'utente specifico.
2. Concessione di tutti i privilegi sullo schema a un utente
Finora, siamo riusciti a concedere un solo privilegio sullo schema a un utente. Beh, non è abbastanza. L'utente non può modificare lo schema a meno che tu non gli conceda tutti i privilegi, come l'inserimento e l'aggiornamento.
Ci sono diversi modi per raggiungere questo obiettivo. Per prima cosa, andiamo concedere all'utente tutti i privilegi su una determinata tabella utilizzando la seguente sintassi:
# CONCEDERE TUTTO SU nome_tabella A nome_ruolo;
L'utente può interagire e modificare la particolare tabella. Tuttavia, non possono funzionare con altre tabelle nello schema.
Per concedere tutti i privilegi su tutte le tabelle in un particolare schema , utilizzare la seguente sintassi:
# GRANT ALL SU TUTTE LE TABELLE NELLO SCHEMA nome_schema TO nome_ruolo;
Infine, puoi concedere privilegi specifici, come l'inserimento o la selezione di tutte le tabelle sullo schema a un determinato ruolo .
Il ruolo può selezionare i dati in tutte le tabelle nello schema specificato. È così che definisci quali privilegi concedere sullo schema a diversi utenti.
Conclusione
PostgreSQL è un potente DBMS. Ha diverse funzionalità, incluso 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 per concedere privilegi sullo schema ai ruoli utilizzando l'istruzione GRANT in PostgreSQL.