PostgreSQL concede tutti i privilegi sullo schema all'utente

Postgresql Concede Tutti I Privilegi Sullo Schema All Utente



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:

# \ da


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:

$ psql -IN linuxhint1 -d postgres



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:

# CONCEDERE nome_privilegio ON nome_tabella TO nome_ruolo;


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 .

# CONCEDERE nome_privilegio SU TUTTE LE TABELLE NELLO SCHEMA nome_schema TO nome_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.