SQL Server GRANT

Sql Server Grant



В тази статия ще разберете как да използвате оператора GRANT в SQL Server, за да предоставите разрешения за защита на принципал.

SQL Server Securable и Principal

Защитено се отнася до ресурсите, които системата за оторизация на SQL Server Database Engine контролира достъпа. Пример може да бъде таблица от база данни.

Принципалът се отнася до всеки обект, който изисква достъп до всеки ресурс на SQL Server. Например, потребител, който иска разрешения за таблица, е принципал.







Изявление за предоставяне на SQL Server

Следното показва синтаксиса на командата GRANT в SQL Server:



ПРЕДОСТАВЯНЕ на разрешения
ПО обезопасяващо се ДО основно;

Трябва да посочите разрешението, което искате да присвоите на принципала, като списък, разделен със запетаи.



Ключовата дума ON ви позволява да посочите защитения елемент, към който се прилагат разрешенията. И накрая, ключовата дума TO ви позволява да зададете целевия принципал.





Например създаването на потребител с помощта на израза CREATE USER не дефинира разрешенията за този потребител. Следователно е важно да използвате оператора GRANT, за да зададете разрешенията за този потребител.

Нека вземем пример.



Създаване на примерен вход

Нека започнем, като създадем примерен вход за илюстративни цели. Заявката е посочена по-долу:

създаване на linuxhint за влизане
с парола='парола';

Горната команда трябва да създаде потребител с потребителско име linuxhint и посочената парола.

Създайте примерна база данни

Можем да създадем база данни, където потребителят ще пребивава, след като сме дефинирали вход. Заявките са както е показано:

премахване на база данни, ако съществува резолвер;

създаване на резолвер на база данни;

използвайте резолвер;

пуснете таблица, ако съществуват записи;

създаване на записи в таблица(
id int not null identity(1,
1) първичен ключ,
сървър_име varchar(50),
server_address varchar(255) не е нула,
compression_method varchar(100) по подразбиране 'няма',
size_on_disk float не е нула,
size_compressed float,
total_records int not null,
init_date дата
);
вмъкнете
в
ENTRIES(име_на_сървър,
адрес на сървър,
метод_на_компресия,
размер_на_диск,
размер_компресиран,
total_records,
начална_дата)
стойности
('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');

Създайте потребител за вход

След като сме създали базата данни и таблицата, можем да създадем потребител за влизане в linuxhint като:

използвайте резолвер
създаване на потребителски linuxhint
за влизане linuxhint;

Влезте като нов потребител

След това нека влезем като новосъздадения потребител. Командата е както е показано:

setuser 'linuxhint';

След като влезем, можем да опитаме да прегледаме таблиците, като изпълним командата select:

изберете * от записи;

Изпълнението на заявката по-горе трябва да върне грешка:

Msg 229, ниво 14, състояние 5, ред 379
Разрешението SELECT беше отказано на обекта „entries“, база данни „resolver“, схема „dbo“.

Това е така, защото потребителят на linuxhint няма никакви разрешения за базата данни, включително разрешенията SELECT.

Дайте разрешение на потребителя

Трябва да дадем разрешения на SELECT, за да позволим на потребителя да преглежда информацията, съхранена в таблиците.

За целта трябва да влезете с администраторския акаунт на SQL Server.

След това изпълнете заявката като:

предоставяне на избор на записи в linuxhint;

След като се изпълни, влезте като потребител на linuxhint и използвайте израза SELECT.

изберете * от записи;

В този случай командата връща таблицата, тъй като потребителят има разрешения SELECT

Можете също така да зададете друго разрешение на потребителя, като например вмъкване и изтриване като:

предоставяне на вмъкване, изтриване на записи в linuxhint;

в този случай потребителят на linuxhint трябва да има разрешенията SELECT, INSERT и DELETE в таблицата с записи.

Заключение

В тази публикация проучихме използването на командата GRANT в SQL Server. Командата ви позволява да присвоите разрешения на даден принципал.