Baze podataka su ključne, a posao administratora je da kontrolira koje različite uloge korisnici mogu obavljati unutar određene baze podataka. Kao dio autorizacije, administrator može definirati korisničke entitete unutar baze podataka i dodijeliti ili opozvati razne privilegije ulogama.
Na taj način stječete kontrolu nad time tko može pristupiti bazi podataka i koje privilegije ima ako može pristupiti bazi podataka. Na primjer, možete opozvati izmjenu baze podataka ili dodijeliti sve privilegije na shemi korisniku ili korisnicima u danoj tablici. Ovaj vodič detaljno opisuje kako koristiti PostgreSQL da korisniku dodijeli sve privilegije na shemi.
Kako dodijeliti privilegije korisnicima na PostgreSQL
Kada stvorite novu ulogu, oni prema zadanim postavkama dobivaju neke privilegije. Međutim, većina privilegija zahtijeva od administratora da ih dodijeli različitim korisnicima kako bi regulirali pristup i kontrolu sheme. Možete dodijeliti sve privilegije odjednom ili odvojeno.
Za ovaj vodič stvorimo novi uloga imenovani linuxhint1 .
$ sudo -iu postgres
# stvoriti ulogu linuxhint1 lozinka za prijavu ‘linuxhint’;
Imajte na umu da smo prijavljeni kao postgres, zadana uloga stvorena nakon što instalirate PostgreSQL.
S kreiranom ulogom (korisnikom) možemo ispisati dostupne uloge pomoću sljedeće naredbe:
Dostupne uloge bit će prikazane u obliku tablice.
Postgres je zadana uloga i ima većinu privilegija već dodijeljenih. Međutim, nova uloga, linuxhint1, nema nikakvih privilegija dok mu ga ne odobrimo.
1. Dodjela određene privilegije korisniku
Stvorena uloga ne može mijenjati shemu osim ako to ne dopustite. Provjerimo ovo tako da prvo stvorimo tablicu kao zadanu ulogu, postgres.
# stvoriti nazive tablica ( m_id int generira se uvijek kao identitet, fname vachar ( 100 ) nije null, lname varchar ( 100 ) nije nula, dob int ) ;
Možete navesti dostupne relacije, kao što je prikazano u nastavku:
Zatim otvorite novu ljusku i prijavite se u PostgreSQL koristeći drugu ulogu, linuxhint1, koju smo ranije izradili pomoću sljedeće naredbe:
The -d navodi da je uloga korištenje baze podataka Postgres.
Pokušajte pročitati sadržaj tablice koju smo izradili pomoću ODABERI naredba.
# ODABERI * IZ imena;
Vraća a dopuštenje odbijeno pogreška koja ometa korisnika u pristupu tablici.
U takvom slučaju, moramo dodijeliti privilegije uloge za odabir/pregled podataka iz dane tablice koristeći sljedeću sintaksu:
Da biste dodijelili privilegije, koristite Postgres sesiju.
Nakon odobrenja pokušajte ponovno pokrenuti prethodnu naredbu.
To je to. Uspjeli ste dodijeliti privilegiju odabira određenom korisniku.
2. Dodjeljivanje svih privilegija na shemi korisniku
Do sada smo uspjeli dodijeliti samo jednu privilegiju za shemu korisniku. Pa, to nije dovoljno. Korisnik ne može mijenjati shemu osim ako mu ne dodijelite sve privilegije, poput umetanja i ažuriranja.
Postoje različiti načini da se to postigne. Prvo, hajdemo dodijeliti korisniku sve privilegije za danu tablicu koristeći sljedeću sintaksu:
# GRANT ALL ON table_name TO role_name;
Korisnik može komunicirati s određenom tablicom i mijenjati je. Međutim, ne mogu raditi s drugim tablicama u shemi.
Do dodijeliti sve privilegije na svim tablicama u određenoj shemi , koristite sljedeću sintaksu:
# GRANT ALL NA SVIM TABLICAMA U SCHEMA schema_name TO role_name;
Na kraju, možete dodijeliti određene privilegije, kao što je umetanje ili odabir svih tablica na shemi danoj ulozi .
Uloga može odabrati podatke u svim tablicama u navedenoj shemi. Tako definirate koje privilegije na shemi dodijeliti različitim korisnicima.
Zaključak
PostgreSQL je moćan DBMS. Ima različite značajke, uključujući dopuštanje administratoru da korisnicima dodjeljuje različite privilegije. Dodjela svih privilegija na shemi korisnicima znači dopuštanje korisniku da mijenja i komunicira sa svim tablicama u navedenoj shemi. Vidjeli smo kako primijeniti taj i druge načine dodjele privilegija na shemu ulogama pomoću izjave GRANT u PostgreSQL-u.