SQL Server Securable og Principal
En sikker henviser til de ressourcer, som SQL Server Database Engine-autorisationssystemet kontrollerer adgangen. Et eksempel kunne være en databasetabel.
En principal refererer til enhver enhed, der kræver adgang til enhver SQL Server-ressource. For eksempel er en bruger, der anmoder om tilladelser på en tabel, en principal.
SQL Server Grant Statement
Det følgende viser syntaksen for GRANT-kommandoen i SQL Server:
GIV tilladelser
ON sikres TIL hoved;
Du skal angive den tilladelse, du ønsker at tildele rektor, som en kommasepareret liste.
Nøgleordet ON giver dig mulighed for at angive den sikrede, som tilladelserne anvendes på. Endelig giver TO nøgleordet dig i stand til at angive målprincippet.
Oprettelse af en bruger ved hjælp af CREATE USER-sætningen definerer f.eks. ikke tilladelserne for denne bruger. Det er derfor vigtigt at bruge GRANT-sætningen til at indstille tilladelserne for den pågældende bruger.
Lad os tage et eksempel.
Opret eksempel login
Lad os starte med at oprette et eksempel på login til illustrationsformål. Forespørgslen er som angivet nedenfor:
oprette login linuxhintmed password='adgangskode';
Kommandoen ovenfor skal oprette en bruger med brugernavnet linuxhint og den angivne adgangskode.
Opret prøvedatabase
Vi kan oprette en database, hvor brugeren vil opholde sig, når vi har defineret et login. Forespørgslerne er som vist:
drop database, hvis der findes resolver;oprette database resolver;
brug resolver;
drop tabel hvis der findes poster;
oprette tabelposter(
id int ikke null identitet(1,
1) primær nøgle,
servernavn varchar(50),
server_adresse varchar(255) ikke null,
compression_method varchar(100) standard 'ingen',
size_on_disk float ikke null,
size_compressed float,
total_records int ikke null,
init_date dato
);
indsætte
ind i
ENTRIES(server_navn,
serveradresse,
kompressionsmetode,
størrelse_på_disk,
størrelse_komprimeret,
total_records,
init_date)
værdier
('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');
Opret en bruger til login
Når vi har oprettet databasen og tabellen, kan vi oprette en bruger til linuxhint login som:
bruge resolveroprette bruger linuxhint
til login linuxhint;
Log ind som ny bruger
Lad os derefter logge ind som den nyoprettede bruger. Kommandoen er som vist:
setuser 'linuxhint';Når vi er logget ind, kan vi forsøge at se tabellerne ved at køre select-kommandoen:
vælg * fra poster;Kørsel af forespørgslen ovenfor skulle returnere en fejl:
Besked 229, niveau 14, tilstand 5, linje 379SELECT-tilladelsen blev nægtet på objektet 'entries', database 'resolver', skema 'dbo'.
Dette skyldes, at linuxhint-brugeren ikke har nogen tilladelser på databasen, inklusive SELECT-tilladelserne.
Giv tilladelse til brugeren
Vi er nødt til at give SELECT-tilladelserne for at give brugeren mulighed for at se de oplysninger, der er gemt i tabellerne.
Til det skal du logge ind med SQL Server-administrationskontoen.
Kør derefter forespørgslen som:
giv valg på poster til linuxhint;Når den er udført, skal du logge ind som linuxhint-brugeren og bruge SELECT-sætningen.
vælg * fra poster;I dette tilfælde returnerer kommandoen tabellen, da brugeren har SELECT-tilladelser
Du kan også tildele andre tilladelser til brugeren, såsom indsæt og slet som:
giv indsæt, slet på indgange til linuxhint;i dette tilfælde skal linuxhint-brugeren have rettighederne SELECT, INSERT og DELETE i indtastningstabellen.
Konklusion
I dette indlæg undersøgte vi brugen af GRANT-kommandoen i SQL Server. Kommandoen giver dig mulighed for at tildele tilladelser til en given rektor.