Introduzione a PostgreSQL Elenco Utenti
In un qualsiasi database, abbiamo bisogno di creare più utenti che possono accedere al database. Ogni utente dovrebbe avere determinati privilegi di accesso e dovrebbe essere autorizzato, l’utente. Per impostazione predefinita, in PostgreSQL server di database ha un utente predefinito di nome Postgres. Questo è il superutente che ha tutti i diritti e i privilegi concessi per tutti i database e le tabelle. Egli stesso può creare nuovi utenti e assegnare loro ruoli, concedere e revocare autorizzazioni ad altri utenti e così via. Spesso, il superutente o l’amministratore del database deve conoscere tutti gli utenti presenti nel server di database corrente. In questo articolo, impareremo come possiamo elencare tutti gli utenti che sono presenti nel nostro server di database corrente. Cominciamo studiando dove i dati relativi all’utente sono memorizzati e manipolati nel database.
Utenti della lista PostgreSQL
Di seguito sono riportati i tre diversi utenti della lista:
Inizia il tuo corso gratuito di Data Science
Hadoop, Data Science, Statistics & altri
1. Dati utente in PostgreSQL
Tutti i dati relativi all’utente sono memorizzati nella tabella denominata pg_user, che appartiene allo schema denominato pg_catalog. Questa tabella contiene tutte le informazioni come username, usesysid, usecreatedb, usesuper, userepl, usebypassrls, passwd, valuntil e useconfig. Username, usesysid e passwd sono il nome, l’ID e la password memorizzati nel sistema di crittografia hash md5 dell’utente. Contemporaneamente, tutti gli altri parametri sono i parametri booleani che specificano se l’utente dispone di tale privilegio, ad esempio usesuper, che specifica se l’utente è un superutente o meno. Se sì, allora contiene valore come t che sta per true else f che significa false. Vediamo cosa significano tutti gli altri campi recuperati nella praticità.
- Usecreatedb: Questo campo ci dice se quel particolare utente può creare un nuovo database e ha il privilegio di farlo.
- Userepl: Possiamo creare repliche di una singola tabella in molti altri database. Solo un utente specifico che dispone di tale privilegio può farlo. Quindi, se l’utente ha il privilegio di creare nuove repliche, questo campo è impostato su true.
- Usebypassrls: Questo campo è impostato su true solo se l’utente è autorizzato a bypassare RLS
Vedremo prima come recuperare le informazioni relative all’utente dalla tabella pg_user. Avremo bisogno di costruire la nostra query nel modo seguente –
Codice:
SELECT * FROM pg_catalog.pg_user;
Uscita:
Se si desidera solo ottenere l’elenco degli utenti contenente i suoi nomi, è possibile attivare la seguente query.
Codice:
SELECT usename FROM pg_catalog.pg_user;
Uscita:
2. Usando metacomandi
PostgreSQL ci fornisce una meravigliosa utility chiamata psql, dove possiamo usare metacomandi. I metacomandi sono le utility pronte all’uso che sono disponibili per l’uso, rendendo molto semplice il lavoro dell’amministratore del database. Per recuperare i dati relativi all’utente \, du è il meta-comando che può essere utilizzato. Per questo, è necessario utilizzare il prompt dei comandi psql in PostgreSQL. Cerchiamo di fuoco di questo comando e vedere che è il risultato che stiamo ottenendo:
Codice:
\du
Uscita:
- Qui, il Ruolo Nome è il nome dell’utente. Elenco dei ruoli, ad es. attributi che sono i ruoli che un particolare utente ha per se stesso. Superuser, Create role, Create DB, Replication, Bypass RLS sono regole assegnate al superuser che significa che il superuser può creare i nuovi ruoli e utenti, creare nuovi database, eseguire repliche degli oggetti esistenti e bypassare il RLS.
- Il campo”Membro di” specifica se l’utente è membro di un gruppo. In PostgreSQL, l’amministratore del database può creare più gruppi e aggiungere utenti diversi a gruppi diversi, il che lo aiuta a gestire correttamente gli utenti durante la griglia e la revoca delle autorizzazioni. Se ci sono tali gruppi e quel particolare utente appartiene a un particolare gruppo, il nome di quel gruppo viene mostrato davanti a quell’utente nel campo Membro della colonna.
- Questo metacomandi attiva internamente una query nella tabella pg_catalog.pg_user per recuperare le informazioni dell’utente. Qui, otteniamo il nome del ruolo come nome dell’utente e un elenco di attributi dei ruoli ci aiuta a sapere quali privilegi sono concessi a quel particolare utente mentre un membro del campo ci dice se l’utente è un membro di un particolare gruppo se presente. La query che viene attivata internamente dopo aver utilizzato \ du metacommand è in qualche modo simile alla seguente istruzione di query:
Codice:
SELECT u.usename AS "Role name",
CASE WHEN u.usesuper AND u.usecreatedb THEN CAST('Create DB, Superuser' AS pg_catalog.text)
WHEN u.usesuper THEN CAST('Superuser' AS pg_catalog.text) WHEN u.usecreatedb THEN CAST('Create DB' AS pg_catalog.text)
ELSE CAST('' AS pg_catalog.text) END AS "Attributes"
FROM pg_catalog.pg_user u ORDER BY 1;
3. Usando pg_shadow
Un altro modo per ottenere l’elenco degli utenti è usare la tabella pg_shadow che contiene anche informazioni sugli utenti nel server PostgreSQL. Questa tabella è mantenuta per la compatibilità con le versioni precedenti di PostgreSQL precedenti alla 8.1. Questa tabella memorizza i ruoli che possono accedere e contrassegnare rolcanlogin come 1 nella tabella pg_authid. Pg_user è la vista creata sulla tabella di base pg_shadow tabella, che è disponibile pubblicamente. pg_shadow è accessibile solo dal superutente. la vista pg_user contiene il campo password come vuoto per mantenere la sicurezza. La tabella shadow pg_ contiene i campi username, usesysid, usecreatedb, usesuper, userepl, usebypassrls, passwd, valuntil e useconfig per tutti gli utenti nel server di database.
Codice:
SELECT * FROM pg_shadow;
Uscita:
select usesysid as "Id of User", usename as "User Name",
usesuper as "Whether User Is SuperUser", passwd as "Md5 Encrypted Password", valuntil as "Expiry of Password"
from pg_shadow order by usename;
Uscita:
Conclusione
Nel database PostgreSQL server, siamo in grado di recuperare le informazioni del profilo utente tramite il recupero di record dalla tabella pg_user che appartiene a pg_catalog schema. Un altro modo è usare il meta-comando \ du, che attiva internamente la query sulla tabella pg_user stessa. Oltre a questo, esiste un’altra tabella denominata pg_shadow, che memorizza le informazioni sugli utenti e può essere ulteriormente utilizzata per elencare tutti gli utenti nel server di database PostgreSQL. Si noti che l’ambito di tutti questi metodi è l’intero server di database.
Articoli consigliati
Questa è una guida per gli utenti della lista PostgreSQL. Qui discutiamo dati utente, metaComando utente e pg_shadow utente con esempi da implementare. Si può anche passare attraverso i nostri altri articoli correlati per saperne di più–
- PostgreSQL FETCH
- Foreign Key in PostgreSQL
- Tabella di PostgreSQL
- PostgreSQL Query | Introduzione | Esempi
- PostgreSQL REGEXP_MATCHES()
- Guida a SQL REGEXP