Introducere în utilizatorii listei PostgreSQL
în orice bază de date, trebuie să creăm și să avem mai mulți utilizatori care pot accesa baza de date. Fiecare utilizator ar trebui să aibă anumite privilegii de acces și ar trebui să fie autorizat, utilizatorul. În mod implicit, în serverul de baze de date PostgreSQL are un utilizator implicit numit Postgres. Acesta este superutilizatorul care are toate drepturile și privilegiile acordate pentru toate bazele de date și tabelele. El însuși poate crea noi Utilizatori și le poate atribui roluri, acorda și revoca permisiunile altor utilizatori și așa mai departe. Adesea, superutilizatorul sau administratorul bazei de date trebuie să știe despre toți utilizatorii prezenți în serverul de baze de date curent. În acest articol, vom afla cum putem lista Toți utilizatorii care sunt prezenți în serverul nostru de baze de date curente. Să începem prin a studia unde sunt stocate și manipulate datele legate de utilizator în baza de date.
utilizatorii listei PostgreSQL
mai jos sunt cei trei utilizatori diferiți ai listei:
începeți cursul gratuit de știință a datelor
Hadoop, știința datelor, statistici & altele
1. Datele utilizatorului din PostgreSQL
toate datele legate de utilizator sunt stocate în tabelul numit pg_user, care aparține schemei numite pg_catalog. Acest tabel este format din toate informațiile, cum ar fi numele de utilizator, usesysid, usecreatedb, usesuper, userepl, usebypassrls, passwd, valuntil, și useconfig. Numele de utilizator, usesysid și passwd sunt numele, id-ul și parola stocate în sistemul de criptare hash md5 al utilizatorului. În același timp, toți ceilalți parametri sunt parametrii booleni care specifică dacă utilizatorul are acel privilegiu, cum ar fi usesuper, care specifică dacă acel utilizator este un superuser sau nu. Dacă da, atunci conține valoare ca t care înseamnă true else f care înseamnă fals. Să vedem ce înseamnă practic toate celelalte domenii recuperate.
- Usecreatedb: acest câmp ne spune dacă acel utilizator poate crea o nouă bază de date și are privilegiul de a face acest lucru.
- Userepl: putem crea replici ale unui singur tabel în multe alte baze de date. Numai un anumit utilizator care are acest privilegiu poate face acest lucru. Prin urmare, dacă utilizatorul are privilegiul de a crea noi replici, acest câmp este setat la true.
- Usebypassrls: acest câmp este setat la true numai dacă utilizatorului i se permite să ocolească RLS
vom vedea mai întâi cum putem prelua informațiile legate de utilizator din tabelul pg_user. Va trebui să construim interogarea noastră în felul următor –
Cod:
SELECT * FROM pg_catalog.pg_user;
ieșire:
dacă doriți doar să obțineți lista de utilizatori care conțin numele sale, puteți declanșa următoarea interogare.
Cod:
SELECT usename FROM pg_catalog.pg_user;
Ieșire:
2. Folosind MetaCommands
PostgreSQL ne oferă un utilitar minunat numit psql, unde putem folosi metaCommands. MetaCommands sunt utilitățile scurte gata făcute care sunt disponibile pentru utilizare, ceea ce face munca administratorului bazei de date foarte ușoară. Pentru preluarea datelor legate de utilizator \, du este meta-comanda care poate fi utilizată. Pentru aceasta, va trebui să utilizați promptul de comandă psql în PostgreSQL. Să tragem această comandă și să vedem că este rezultatul pe care îl obținem:
Cod:
\du
ieșire:
- aici, numele rolului este numele utilizatorului. Lista rolurilor, adică. atribute care sunt rolurile pe care un anumit utilizator le are pentru sine. Superuser, Create role, Create DB, Replication, Bypass RLS sunt reguli atribuite superuserului, ceea ce înseamnă că superuserul poate crea noi roluri și utilizatori, poate crea noi baze de date, poate efectua replicări ale obiectelor existente și poate ocoli RLS.
- câmpul”membru al” specifică dacă utilizatorul este membru al vreunui grup. În PostgreSQL, administratorul bazei de date poate crea mai multe grupuri și poate adăuga utilizatori diferiți la diferite grupuri, ceea ce îl ajută să gestioneze utilizatorii în mod corespunzător în timp ce răzuiește și revocă permisiunile. Dacă există astfel de grupuri și acel anumit utilizator aparține unui anumit grup, atunci numele acelui grup este afișat în fața acelui utilizator în coloana câmp membru al.
- acest metaCommands declanșează intern o interogare în tabelul pg_catalog.pg_user pentru a prelua informațiile utilizatorului. Aici, obținem numele rolului ca nume al utilizatorului și o listă de atribute de roluri ne ajută să știm ce privilegii sunt acordate acelui utilizator în timp ce un membru al câmpului ne spune dacă utilizatorul este membru al unui anumit grup, dacă este prezent. Interogarea care se declanșează intern după utilizarea \du metacommand este oarecum similară cu instrucțiunea de interogare de mai jos:
Cod:
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. Utilizarea pg_shadow
o altă modalitate de a obține lista utilizatorilor este folosind tabelul pg_shadow care conține, de asemenea, informații despre utilizatorii din serverul PostgreSQL. Acest tabel este păstrat pentru compatibilitate inversă pentru versiunile PostgreSQL anterioare 8.1. Acest tabel stochează rolurile care se pot conecta și semnaliza rolcanlogin ca 1 în tabelul pg_authid. Pg_user este vizualizarea creată pe tabelul de bază pg_shadow table, care este disponibil public. pg_shadow este accesibil numai de către superuser. vizualizarea pg_user conține câmpul parolă ca necompletat pentru a menține securitatea. Tabelul PG_ shadow conține câmpuri username, usesysid, usecreatedb, usesuper, userepl, usebypassrls, passwd, valuntil și useconfig pentru toți utilizatorii din serverul bazei de date.
Cod:
SELECT * FROM pg_shadow;
ieșire:
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;
ieșire:
concluzie
în serverul de baze de date PostgreSQL, putem prelua informațiile utilizatorului fie prin preluarea înregistrărilor din tabelul pg_user care aparține schemei pg_catalog. O altă modalitate este de a utiliza meta-comanda \du, care declanșează intern interogarea pe tabelul pg_user în sine. În afară de aceasta, există încă un tabel numit pg_shadow, care stochează informații despre utilizatori și poate fi utilizat în continuare pentru a lista Toți utilizatorii din serverul de baze de date PostgreSQL. Rețineți că domeniul de aplicare al tuturor acestor metode este întregul server de baze de date.
Articole recomandate
acesta este un ghid pentru utilizatorii de liste PostgreSQL. Aici vom discuta despre datele de utilizator, metacommand utilizator, și utilizator pg_shadow cu exemple pentru a pune în aplicare. De asemenea, puteți parcurge celelalte articole conexe pentru a afla mai multe–
- PostgreSQL FETCH
- cheie străină în PostgreSQL
- tabel PostgreSQL
- interogări | Introducere | Exemple PostgreSQL
- PostgreSQL REGEXP_MATCHES()
- ghid pentru SQL REGEXP