Защищаемый и основной 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. Команда позволяет назначать разрешения данному принципалу.