SQL Server GRANT

Sql Server Grant



U ovom ćete članku razumjeti kako upotrijebiti naredbu GRANT u SQL Serveru da biste principalu dali dopuštenja na osiguravajućem elementu.

SQL Server Securable i Principal

Zaštiti se odnosi na resurse kojima autorizacijski sustav SQL Server Database Engine kontrolira pristup. Primjer bi bila tablica baze podataka.

Principal se odnosi na bilo koji entitet koji zahtijeva pristup bilo kojem resursu SQL Servera. Na primjer, korisnik koji traži dopuštenja za tablicu je principal.







Izjava o dodjeli SQL Servera

Sljedeće prikazuje sintaksu naredbe GRANT u SQL Serveru:



GRANT dopuštenja
NA osiguran TO glavni;

Morate navesti dopuštenje koje želite dodijeliti principalu kao popis odvojen zarezom.



Ključna riječ ON omogućuje vam da odredite osigurač na koji se primjenjuju dopuštenja. Konačno, ključna riječ TO omogućuje vam postavljanje ciljnog principala.





Na primjer, kreiranje korisnika pomoću izraza CREATE USER ne definira dopuštenja za tog korisnika. Stoga je neophodno koristiti naredbu GRANT za postavljanje dopuštenja za tog korisnika.

Uzmimo primjer.



Stvorite primjer prijave

Započnimo stvaranjem primjera prijave u svrhu ilustracije. Upit je naveden u nastavku:

stvoriti login linuxhint
s lozinkom='lozinka';

Gornja naredba trebala bi stvoriti korisnika s korisničkim imenom linuxhint i navedenom lozinkom.

Stvorite oglednu bazu podataka

Možemo izraditi bazu podataka u kojoj će korisnik boraviti nakon što definiramo prijavu. Upiti su prikazani:

ispusti bazu podataka ako postoji razrješivač;

stvoriti razrješivač baze podataka;

koristiti razrješivač;

ispusti tablicu ako postoje unosi;

kreirati unose u tablici (
id int not null identity(1,
1) primarni ključ,
server_name varchar(50),
server_address varchar(255) nije null,
compression_method varchar(100) default 'none',
size_on_disk float nije null,
size_compressed float,
total_records int nije null,
init_date datum
);
umetnuti
u
ENTRIES(naziv_poslužitelja,
adresa poslužitelja,
metoda_kompresije,
veličina_na_disku,
size_compressed,
ukupni_zapisi,
init_date)
vrijednosti
('MySQL','localhost:3306','lz77',90.66,40.04,560000,'2022-01-02'),
('Redis','localhost:6307','Snappy',3.55,998.2,100000,'2022-03-19'),
('PostgreSQL','localhost:5432','pglz',101.2,98.01,340000 ,'2022-11-11'),
('Elasticsearch','localhost:9200','lz4',333.2,300.2,1200000,'2022-10-08'),
('MongoDB','localhost:27017','Snappy',4.55,4.10,620000,'2021-12-12'),
('Apache Cassandra','localhost:9042','zstd',300.3,200.12,10000000,'2020-03-21');

Stvorite korisnika za prijavu

Nakon što smo kreirali bazu podataka i tablicu, možemo kreirati korisnika za prijavu na linuxhint kao:

koristiti razrješivač
stvoriti korisnički linuxhint
za prijavu linuxhint;

Prijavite se kao novi korisnik

Zatim se prijavimo kao novostvoreni korisnik. Naredba je kao što je prikazano:

setuser 'linuxhint';

Nakon što smo prijavljeni, možemo pokušati vidjeti tablice pokretanjem naredbe select:

odaberite * iz unosa;

Pokretanje gornjeg upita trebalo bi vratiti pogrešku:

Poruka 229, razina 14, stanje 5, redak 379
Dopuštenje SELECT odbijeno je na objektu 'entries', bazi podataka 'resolver', shemi 'dbo'.

To je zato što korisnik linuxhinta nema nikakva dopuštenja za bazu podataka, uključujući dopuštenja SELECT.

Dajte dopuštenje korisniku

Moramo dodijeliti dopuštenja SELECT kako bismo korisniku omogućili pregled informacija pohranjenih u tablicama.

Za to se morate prijaviti s administrativnim računom SQL Servera.

Zatim pokrenite upit kao:

odobriti odabir unosa u linuxhint;

Nakon izvršenja, prijavite se kao korisnik linuxhinta i upotrijebite naredbu SELECT.

odaberite * iz unosa;

U ovom slučaju, naredba vraća tablicu jer korisnik ima dopuštenja SELECT

Također možete dodijeliti druga dopuštenja korisniku, kao što je umetanje i brisanje kao:

odobri umetanje, brisanje unosa u linuxhint;

u ovom slučaju, korisnik linuxhinta trebao bi imati dopuštenja SELECT, INSERT i DELETE na tablici unosa.

Zaključak

U ovom postu istražili smo upotrebu naredbe GRANT u SQL Serveru. Naredba vam omogućuje dodjeljivanje dopuštenja danom principalu.