ГРАНТ SQL Server

Grant Sql Server



В этой статье вы поймете, как использовать оператор GRANT в SQL Server для предоставления разрешений на защищаемый объект принципалу.

Защищаемый и основной SQL Server

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

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







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

Ниже показан синтаксис команды GRANT в SQL Server:



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

Вам необходимо указать разрешение, которое вы хотите назначить принципалу, в виде списка, разделенного запятыми.



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





Например, создание пользователя с помощью оператора CREATE USER не определяет разрешения для этого пользователя. Поэтому очень важно использовать оператор GRANT для установки разрешений для этого пользователя.

Возьмем пример.



Создать пример входа

Давайте начнем с создания примера входа для иллюстрации. Запрос приведен ниже:

создать логин linuxhint
с паролем='пароль';

Приведенная выше команда должна создать пользователя с именем пользователя linuxhint и указанным паролем.

Создать образец базы данных

Мы можем создать базу данных, в которой будет находиться пользователь после того, как мы определили логин. Запросы выглядят так:

удалить базу данных, если существует резолвер;

создать преобразователь базы данных;

использовать резольвер;

удалить таблицу, если существуют записи;

создать записи в таблице(
id int не нулевой идентификатор (1,
1) первичный ключ,
имя_сервера varchar(50),
server_address varchar (255) не нуль,
сжатие_метод varchar (100) по умолчанию 'нет',
size_on_disk с плавающей точкой не равен нулю,
size_compressed с плавающей запятой,
total_records int не нуль,
дата_инициализации
);
вставлять
в
ЗАПИСИ(имя_сервера,
адрес сервера,
метод_сжатия,
Размер на диске,
размер_сжатый,
всего_записей,
дата_инициализации)
ценности
('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;

Войти как новый пользователь

Далее давайте войдем в систему как вновь созданный пользователь. Команда выглядит так:

установить пользователя 'linuxhint';

После входа в систему мы можем попытаться просмотреть таблицы, выполнив команду select:

выбрать * из записей;

Выполнение запроса выше должно вернуть ошибку:

Сообщение 229, уровень 14, состояние 5, строка 379
Разрешение SELECT было отклонено для «записей» объекта, «преобразователя» базы данных, схемы «dbo».

Это связано с тем, что пользователь linuxhint не имеет никаких разрешений для базы данных, включая разрешения SELECT.

Предоставить разрешение пользователю

Нам нужно предоставить разрешения SELECT, чтобы позволить пользователю просматривать информацию, хранящуюся в таблицах.

Для этого вам необходимо войти в систему с учетной записью администратора SQL Server.

Затем запустите запрос как:

разрешить выбор записей для linuxhint;

После выполнения войдите в систему как пользователь linuxhint и используйте оператор SELECT.

выбрать * из записей;

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

Вы также можете назначить пользователю другие разрешения, такие как вставка и удаление, как:

разрешить вставку, удаление записей в linuxhint;

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

Вывод

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