17:22
Назначение прав доступа: Команды GRANT и REVOKE.

Курс по SQL

Урок 45: Назначение прав доступа: Команды GRANT и REVOKE

В этом уроке мы рассмотрим, как управлять правами доступа в СУБД, используя команды GRANT и REVOKE. Эти команды позволяют назначать и отзывать привилегии для пользователей и ролей, обеспечивая безопасность и контроль доступа к базе данных.

Команда GRANT

Команда GRANT используется для назначения привилегий пользователям или ролям. Синтаксис команды следующий:

GRANT привилегия [, ...]
ON объект
TO 'пользователь'@'хост';

Рассмотрим пример назначения привилегий на чтение и запись данных в таблице "Клиенты" пользователю "newuser":

GRANT SELECT, INSERT, UPDATE, DELETE
ON mydatabase.Клиенты
TO 'newuser'@'localhost';

Результат выполнения

Привилегии назначены успешно.

Команда REVOKE

Команда REVOKE используется для отзыва ранее назначенных привилегий. Синтаксис команды следующий:

REVOKE привилегия [, ...]
ON объект
FROM 'пользователь'@'хост';

Рассмотрим пример отзыва привилегий на запись данных в таблице "Клиенты" у пользователя "newuser":

REVOKE INSERT, UPDATE, DELETE
ON mydatabase.Клиенты
FROM 'newuser'@'localhost';

Результат выполнения

Привилегии отозваны успешно.

Привилегии в СУБД

Существует несколько типов привилегий, которые можно назначать и отзывать:

  • SELECT: Привилегия на чтение данных из таблицы.
  • INSERT: Привилегия на вставку данных в таблицу.
  • UPDATE: Привилегия на обновление данных в таблице.
  • DELETE: Привилегия на удаление данных из таблицы.
  • CREATE: Привилегия на создание новых таблиц или баз данных.
  • DROP: Привилегия на удаление таблиц или баз данных.
  • ALTER: Привилегия на изменение структуры таблиц.
  • GRANT OPTION: Привилегия на назначение привилегий другим пользователям.

Назначение привилегий в различных СУБД

Команды GRANT и REVOKE могут незначительно отличаться в зависимости от используемой СУБД. Рассмотрим примеры для MySQL, PostgreSQL и SQLite.

MySQL

-- Назначение привилегий
GRANT SELECT, INSERT, UPDATE, DELETE
ON mydatabase.Клиенты
TO 'newuser'@'localhost';

-- Отзыв привилегий
REVOKE INSERT, UPDATE, DELETE
ON mydatabase.Клиенты
FROM 'newuser'@'localhost';

PostgreSQL

-- Назначение привилегий
GRANT SELECT, INSERT, UPDATE, DELETE
ON TABLE Клиенты
TO newuser;

-- Отзыв привилегий
REVOKE INSERT, UPDATE, DELETE
ON TABLE Клиенты
FROM newuser;

SQLite

В SQLite отсутствует встроенная система управления пользователями и привилегиями. Управление доступом реализуется на уровне приложения.

Упражнения

Упражнение 1: Назначение привилегий

Назначьте привилегии на чтение и вставку данных в таблице "Студенты" пользователю "student" в MySQL.

Решение:

GRANT SELECT, INSERT
ON mydatabase.Студенты
TO 'student'@'localhost';

Объяснение: Мы назначили привилегии на чтение и вставку данных в таблице "Студенты" пользователю "student".

Упражнение 2: Отзыв привилегий

Отзовите привилегии на вставку и обновление данных в таблице "Студенты" у пользователя "student" в MySQL.

Решение:

REVOKE INSERT, UPDATE
ON mydatabase.Студенты
FROM 'student'@'localhost';

Объяснение: Мы отозвали привилегии на вставку и обновление данных в таблице "Студенты" у пользователя "student".

Упражнение 3: Назначение привилегий в PostgreSQL

Назначьте привилегии на чтение и удаление данных в таблице "Заказы" пользователю "manager" в PostgreSQL.

Решение:

GRANT SELECT, DELETE
ON TABLE Заказы
TO manager;

Объяснение: Мы назначили привилегии на чтение и удаление данных в таблице "Заказы" пользователю "manager".

Упражнение 4: Отзыв привилегий в PostgreSQL

Отзовите привилегии на удаление данных в таблице "Заказы" у пользователя "manager" в PostgreSQL.

Решение:

REVOKE DELETE
ON TABLE Заказы
FROM manager;

Объяснение: Мы отозвали привилегии на удаление данных в таблице "Заказы" у пользователя "manager".

Категория: SQL | Просмотров: 88 | Добавил: Admin | Рейтинг: 1.0/1
Всего комментариев: 0
Имя *:
Email *:
Код *: