PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come cambiare un utente in superutente in PostgreSQL

  • Creazione di un nuovo utente
  • Visualizzazione delle autorizzazioni utente esistenti
  • Modifica delle autorizzazioni utente esistenti
    • Assegnazione di SUPERUSER Autorizzazione
    • Revocare le autorizzazioni

La modifica delle autorizzazioni utente all'interno di PostgreSQL può variare da piuttosto semplice a estremamente complessa, a seconda della granularità permissiva effettivamente richiesta. Nella maggior parte dei casi, tuttavia, è il potente ALTER USER comando che dovrebbe essere utilizzato per fare qualsiasi cosa, dal consentire agli utenti di accedere, creare database, gestire ruoli e persino diventare un SUPERUSER conto.

Esploreremo brevemente la potenza di ALTER USER comando in modo da poter eseguire facilmente una serie di assegnazioni e rimozioni di autorizzazioni in caso di necessità.

Creazione di un nuovo utente

Prima di iniziare a alterare autorizzazioni utente, dovremmo stabilire un nuovo account utente (comunemente denominato ROLE ) con cui scherzare.

Per iniziare, elencheremo tutti gli utenti esistenti:

=# SELECT usename FROM pg_user;
 usename
----------
 postgres
(1 row)

Per impostazione predefinita, postgres è in genere l'unico utente esistente, quindi vogliamo creare un nuovo utente di librarian per controllare la nostra library Banca dati. Questo può essere ottenuto usando il CREATE USER comando:

=# CREATE USER librarian;
CREATE ROLE
=# SELECT usename FROM pg_user;
  usename
-----------
 postgres
 librarian
(2 rows)

Visualizzazione delle autorizzazioni utente esistenti

Spesso può essere utile esaminare le autorizzazioni esistenti assegnate agli utenti nel sistema. Questo può essere facilmente ottenuto con \du comando da psql richiesta:

=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

Possiamo vederlo chiaramente anche se ora abbiamo aggiunto un nuovo librarian utente, dobbiamo assegnargli dei permessi.

Modifica delle autorizzazioni utente esistenti

Ora che il nostro librarian utente esiste, possiamo iniziare a usare ALTER USER per modificare i permessi concessi a librarian .

Il formato base di ALTER USER include il nome dell'utente (o ROLE ) seguito da una serie di options per informare PostgreSQL sulle modifiche permissive da apportare:

=# ALTER USER role_specification WITH OPTION1 OPTION2 OPTION3;

Queste opzioni vanno da CREATEDB , CREATEROLE , CREATE USER e persino SUPERUSER . Inoltre, la maggior parte delle opzioni ha anche una controparte negativa, che informa il sistema che desideri negare all'utente quella particolare autorizzazione. Questi nomi di opzioni sono gli stessi della loro controparte di assegnazione, ma sono preceduti da NO (es. NOCREATEDB , NOCREATEROLE , NOSUPERUSER ).

Assegnazione di SUPERUSER Autorizzazione

Ora che comprendiamo le basi della creazione di utenti e dell'utilizzo di ALTER USER per modificare i permessi, possiamo semplicemente usare il SUPERUSER opzione per assegnare il nostro librarian utente SUPERUSER permesso:

=# ALTER USER librarian WITH SUPERUSER;
ALTER ROLE

Abbastanza sicuro, se mostriamo ora il nostro elenco di autorizzazioni, vedremo librarian ha il nuovo SUPERUSER permesso che vogliamo:

=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian | Superuser                                      | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

Revocare le autorizzazioni

Nel caso in cui commettiamo un errore e assegniamo un'autorizzazione che in seguito desideriamo revocare, è sufficiente emettere lo stesso ALTER USER comando ma aggiungi il NO prefisso davanti alle opzioni permissive da revocare.

Ad esempio, possiamo rimuovere SUPERUSER dal nostro librarian utente così:

=# ALTER USER librarian WITH NOSUPERUSER;
ALTER ROLE
=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}