English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Privilegi (PRIVILEGES) di PostgreSQL

Ogni volta che si crea un oggetto del database, viene assegnato un proprietario, che di solito è la persona che esegue la frase create.

Per la maggior parte dei tipi di oggetti, lo stato iniziale è che solo il proprietario (o l'utente superutente) può modificare o eliminare l'oggetto. Per consentire ad altri ruoli o utenti di utilizzarlo, è necessario impostare i permessi per quell'utente.

In PostgreSQL, i permessi sono suddivisi nelle seguenti categorie:

  • SELECT

  • INSERT

  • UPDATE

  • DELETE

  • TRUNCATE

  • REFERENCES

  • TRIGGER

  • CREATE

  • CONNECT

  • TEMPORARY

  • EXECUTE

  • USAGE

In base al tipo dell'oggetto (tabella, funzione, ecc.), applicare i permessi specificati a quell'oggetto.

Per assegnare permessi agli utenti, utilizzare il comando GRANT.

Sintassi di GRANT

La sintassi di base del comando GRANT è la seguente:

GRANT privilege [, ...]
ON object [, ...]
TO { PUBLIC | GROUP group | username }
  • permesso − il valore può essere: SELECT, INSERT, UPDATE, DELETE, RULE, ALL.

  • object − il nome dell'oggetto a cui assegnare l'accesso. Gli oggetti possibili includono: table, view, sequence.

  • PUBLIC − rappresenta tutti gli utenti.

  • GROUP group − per assegnare i permessi al gruppo utente.

  • username − il nome utente a cui assegnare i permessi. PUBLIC è una forma abbreviata che rappresenta tutti gli utenti.

Inoltre, possiamo utilizzare il comando REVOKE per revocare i permessi, la sintassi di REVOKE è:

REVOKE privilege [, ...]
ON object [, ...]
FROM { PUBLIC | GROUP groupname | username }

Esempio online

Per comprendere i permessi, crea un utente:

w3codeboxdb=# CREATE USER w3codebox WITH PASSWORD 'password';
CREATE ROLE

Informazione CREATE ROLE indica che è stato creato un utente "w3codebox".

Esempio online

Crea la tabella COMPANY (Scarica il file SQL di COMPANY ),i dati contenuti sono come segue:

w3codeboxdb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

Ora assegniamo i permessi all'utente "w3codebox":

w3codeboxdb=# GRANT ALL ON COMPANY TO w3codebox;
GRANT

Informazione GRANT indica che tutte le autorizzazioni sono state assegnate a "w3codebox".

Di seguito vengono revocate le autorizzazioni dell'utente "w3codebox":

w3codeboxdb=# REVOKE ALL ON COMPANY FROM w3codebox;
REVOKE

Informazione REVOKE indica che sono state revocate le autorizzazioni dell'utente.

Puoi anche eliminare l'utente:

w3codeboxdb=# DROP USER w3codebox;
DROP ROLE

Informazione DROP ROLE indica che l'utente "w3codebox" è stato rimosso dal database.