SQL Server GRANT

Sql Server Grant



I den här artikeln kommer du att förstå hur du använder GRANT-satsen i SQL Server för att ge behörigheter på en säkerbar till en principal.

SQL Server Securable och Principal

En säker hänvisar till de resurser som SQL Server Database Engine-auktoriseringssystemet kontrollerar åtkomst. Ett exempel skulle vara en databastabell.

En principal hänvisar till varje enhet som kräver åtkomst till en SQL Server-resurs. Till exempel är en användare som begär behörigheter för en tabell en principal.







SQL Server Grant Statement

Följande visar syntaxen för GRANT-kommandot i SQL Server:



GE behörigheter
PÅ säkringsbar TO main;

Du måste ange den behörighet du vill tilldela rektorn som en kommaseparerad lista.



Med nyckelordet ON kan du ange säkerhetsobjektet som behörigheterna tillämpas på. Slutligen låter nyckelordet TO dig ställa in målprincipen.





Att till exempel skapa en användare med CREATE USER-satsen definierar inte behörigheterna för den användaren. Det är därför viktigt att använda GRANT-satsen för att ställa in behörigheterna för den användaren.

Låt oss ta ett exempel.



Skapa exempelinloggning

Låt oss börja med att skapa ett exempel på inloggning i illustrationssyfte. Frågan är enligt nedan:

skapa inloggning linuxhint
med lösenord='lösenord';

Kommandot ovan ska skapa en användare med användarnamnet linuxhint och det angivna lösenordet.

Skapa exempeldatabas

Vi kan skapa en databas där användaren kommer att bo när vi har definierat en inloggning. Frågorna är som visas:

släpp databas om det finns resolver;

skapa databas resolver;

använda resolver;

släpp tabell om det finns poster;

skapa tabellposter(
id int inte null identitet(1,
1) primärnyckel,
servernamn varchar(50),
server_address varchar(255) inte null,
compression_method varchar(100) standard 'ingen',
size_on_disk float inte null,
size_compressed float,
total_records int inte null,
init_date date
);
Föra in
in i
ENTRIES(servernamn,
server adress,
komprimeringsmetod,
storlek på disk,
size_compressed,
totala_rekord,
init_date)
värden
('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');

Skapa en användare för inloggningen

När vi har skapat databasen och tabellen kan vi skapa en användare för linuxhint-inloggningen som:

använda resolver
skapa användarens linuxhint
för inloggning linuxhint;

Logga in som ny användare

Låt oss sedan logga in som den nyskapade användaren. Kommandot är som visas:

setuser 'linuxhint';

När vi väl är inloggade kan vi försöka se tabellerna genom att köra kommandot select:

välj * från poster;

Att köra frågan ovan bör returnera ett fel:

Msg 229, Level 14, State 5, Line 379
SELECT-behörigheten nekades för objektet 'entries', databasen 'resolver', schema 'dbo'.

Detta beror på att linuxhint-användaren inte har några behörigheter på databasen, inklusive SELECT-behörigheterna.

Ge användaren behörighet

Vi måste ge SELECT-behörigheterna för att användaren ska kunna se informationen som lagras i tabellerna.

För det måste du logga in med SQL Server-administratörskontot.

Kör sedan frågan som:

bevilja val på poster till linuxhint;

När den har körts loggar du in som linuxhint-användaren och använder SELECT-satsen.

välj * från poster;

I det här fallet returnerar kommandot tabellen eftersom användaren har SELECT-behörigheter

Du kan också tilldela andra behörigheter till användaren, till exempel infoga och ta bort som:

bevilja infoga, ta bort på poster till linuxhint;

i detta fall bör linuxhint-användaren ha behörigheterna SELECT, INSERT och DELETE i inmatningstabellen.

Slutsats

I det här inlägget utforskade vi användningen av kommandot GRANT i SQL Server. Kommandot låter dig tilldela behörigheter till en given huvudman.