SQL Server GRANT

Sql Server Grant



V tem članku boste razumeli, kako uporabiti stavek GRANT v strežniku SQL Server za dodelitev dovoljenj za zavarovanje glavnemu uporabniku.

SQL Server Securable in Principal

Zavarovano se nanaša na vire, do katerih avtorizacijski sistem SQL Server Database Engine nadzoruje dostop. Primer bi bila tabela baze podatkov.

Glavni se nanaša na katero koli entiteto, ki zahteva dostop do katerega koli vira SQL Server. Na primer, uporabnik, ki zahteva dovoljenja za tabelo, je glavni.







Izjava o dodelitvi SQL Serverja

Spodaj je prikazana sintaksa ukaza GRANT v strežniku SQL Server:



PODELITE dovoljenja
ON varno TO glavni;

Dovoljenje, ki ga želite dodeliti glavnemu, morate določiti kot seznam, ločen z vejico.



Ključna beseda ON vam omogoča, da podate zavarovanje, za katerega so uporabljena dovoljenja. Končno vam ključna beseda TO omogoča nastavitev ciljnega principala.





Če na primer ustvarite uporabnika s stavkom CREATE USER, ne definirate dovoljenj za tega uporabnika. Zato je bistveno, da uporabite stavek GRANT za nastavitev dovoljenj za tega uporabnika.

Vzemimo primer.



Ustvari primer prijave

Začnimo z ustvarjanjem vzorčne prijave za ponazoritev. Poizvedba je navedena spodaj:

ustvari prijavni linuxhint
z geslom='geslo';

Zgornji ukaz bi moral ustvariti uporabnika z uporabniškim imenom linuxhint in podanim geslom.

Ustvari vzorčno bazo podatkov

Ustvarimo lahko bazo podatkov, kjer bo uporabnik bival, ko definiramo prijavo. Poizvedbe so prikazane:

izpusti bazo podatkov, če obstaja razreševalec;

izdelava razreševalnika baze podatkov;

uporaba razreševalnika;

spustite tabelo, če obstajajo vnosi;

ustvari vnose v tabeli (
id int not null identity(1,
1) primarni ključ,
ime_strežnika varchar(50),
server_address varchar(255) ni nič,
compression_method varchar(100) privzeto 'brez',
size_on_disk float ni ničelna,
size_compressed float,
total_records int ni nič,
init_date datum
);
vstavi
v
VNOSI(ime_strežnika,
naslov strežnika,
metoda_stiskanja,
velikost_na_disku,
velikost_stisnjena,
total_records,
začetni_datum)
vrednote
('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');

Ustvarite uporabnika za prijavo

Ko ustvarimo bazo podatkov in tabelo, lahko ustvarimo uporabnika za prijavo v linuxhint kot:

uporabite razreševalnik
ustvari uporabnika linuxhint
za prijavo linuxhint;

Prijavite se kot nov uporabnik

Nato se prijavimo kot novo ustvarjeni uporabnik. Ukaz je, kot je prikazano:

setuser 'linuxhint';

Ko smo prijavljeni, si lahko poskusimo ogledati tabele z zagonom ukaza select:

izberite * med vnosi;

Izvajanje zgornje poizvedbe bi moralo vrniti napako:

Sporočilo 229, raven 14, stanje 5, vrstica 379
Dovoljenje SELECT je bilo zavrnjeno za objekt 'entries', baza podatkov 'resolver', shema 'dbo'.

To je zato, ker uporabnik linuxhint nima nobenih dovoljenj za bazo podatkov, vključno z dovoljenji SELECT.

Podeli dovoljenje uporabniku

Dodeliti moramo dovoljenja SELECT, da uporabniku omogočimo ogled informacij, shranjenih v tabelah.

Za to se morate prijaviti s skrbniškim računom SQL Server.

Nato zaženite poizvedbo kot:

odobri izbiro pri vnosih v linuxhint;

Ko je izveden, se prijavite kot uporabnik linuxhint in uporabite stavek SELECT.

izberite * med vnosi;

V tem primeru ukaz vrne tabelo, saj ima uporabnik dovoljenja SELECT

Uporabniku lahko dodelite tudi druga dovoljenja, na primer vstavljanje in brisanje kot:

odobri vnos, brisanje vnosov v linuxhint;

v tem primeru mora imeti uporabnik linuxhinta dovoljenja SELECT, INSERT in DELETE v tabeli vnosov.

Zaključek

V tej objavi smo raziskali uporabo ukaza GRANT v strežniku SQL Server. Ukaz vam omogoča, da danemu principalu dodelite dovoljenja.