Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР №10

.docx
Скачиваний:
1
Добавлен:
28.06.2022
Размер:
184.58 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«Национальный исследовательский университет «МИЭТ»

Факультет «Микроприборы и системы управления» (МПСУ)

Кафедра «Вычислительная техника» (ВТ)

Лабораторная работа №10 по дисциплине

«Базы данных»

Тема: «Пользователи и роли в SQL Server»

Цель работы: получить навыки создания пользователей, назначения им ролей и привилегий в MS SQL Server.

Продолжительность работы: 4 часа.

Выполнила студентка группы «ИВТ-44»: Никитина София Геннадьевна

Преподаватель: Немченко Дмитрий Игоревич

2021 г.

Содержание

  1. Выполнение работы 3

    1. Задание 1 3

    2. Задание 2 6

    3. Задание 3 7

  1. Вывод 6

  1. Выполнение работы

Задание 1. Для базы данных, созданной на Л.р.№№7-9, на основании выделенных при проектировании ИЛМ в рамках Л.р.№2 пользователей и их информационных потребностей, сформировать при помощи SQL-запросов соответствующие им роли, запросы занести в отчет.

Задание 2. Внести в БД (и в отчет) функции, позволяющие:

- добавлять новых пользователей и назначать им данные роли;

- переназначать пользователям роли;

- удалять пользователей при условии, что они имеют заданную роль. Задание 3. Проверить работоспособность созданных функций и занести результат в отчет.

Рисунок 1. ИЛМ базы данных.

Задание 1

Выберем ранее созданную БД для дальнейшей работы с ней.

USE [БД№7]

Создадим пользователей на сервере с логином и паролем.

EXEC sp_addlogin 'AngryAunt', '1111', 'БД№7'

EXEC sp_addlogin 'AngryUncle', '2222', 'БД№7'

EXEC sp_addlogin 'SadBoy', '3333', 'БД№7'

Рисунок 2. Пользователи на сервере.

Добавим роли бухгалтера, декана и студента в нашу базу данных. db_owner – роль владельца базы данных. С его подключением он может управлять привилегиями для этих ролей.

EXEC sp_addrole 'accountant', db_owner

EXEC sp_addrole 'dean', db_owner

EXEC sp_addrole 'student', db_owner

Рисунок 3. Роли в базе данных.

Подключим пользователей к базе данных посредством заданной роли.

EXEC sp_adduser 'AngryAunt', 'ТамараВасильевна', 'accountant'

EXEC sp_adduser 'AngryUncle', 'ДеканДеканович', 'dean'

EXEC sp_adduser 'SadBoy', 'НикитаЛитвинков', 'student'

Рисунок 4. Пользователи в базе данных.

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

GRANT Select, Update, Insert ON Льгота

TO student;

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

GRANT Select, Update ON Факультет

TO dean;

GRANT Select, Update ON Группа

TO dean;

GRANT Select ON Студент

TO dean;

Бухгалтеру предоставляются все привилегии к каждой из таблиц, чтобы контролировать изменение данных, составлять учет по всем таблицам. Однако бухгалтеры не могут изменять льготу у студентов, только просматривать.

GRANT ALL PRIVILEGES ON Студент

TO accountant;

GRANT ALL PRIVILEGES ON Родственник

TO accountant;

GRANT ALL PRIVILEGES ON ВидРодственника

TO accountant;

GRANT ALL PRIVILEGES ON Группа

TO accountant;

GRANT ALL PRIVILEGES ON Факультет

TO accountant;

GRANT Select ON Льгота

TO accountant;

Задание 2

Добавим еще пользователя.

EXEC sp_addlogin 'VeryAngryAunt', '4444', 'БД№7'

Назначим его бухгалтером.

EXEC sp_adduser 'VeryAngryAunt', 'ВалентинаМихайловна', 'accountant'

Переназначим роль. Для этого удалим его из роли.

EXEC sp_droprolemember 'accountant', 'ВалентинаМихайловна'

Создадим новую роль.

EXEC sp_addrole 'test', db_owner

Назначим бывшему бухгалтеру роль «тест».

EXEC sp_addrolemember 'test', 'ВалентинаМихайловна'

Убедимся в этом:

Рисунок 5. Назначение новой роли.

C помощью курсора @pers и временной таблицы #person удалим пользователей, имеющих роль “test”

CREATE TABLE #person (DBrole varchar(60) NOT NULL, MBname varchar(60), SSID varchar(100))

INSERT INTO #person

EXEC sp_helprolemember 'test'

DECLARE @pers varchar(60)

SELECT @pers = (SELECT MBname from #person)

EXEC sp_droprolemember 'test', @pers

EXEC sp_dropuser @pers

DROP TABLE #person;

При повторном обращении возникает ошибка. Следовательно, пользователь удален.

Рисунок 6. Ошибка отсутствия роли и пользователя.

Задание 3

Зайдем в систему как студент и попробуем изменить таблицу Студент.

EXECUTE AS LOGIN = 'SadBoy'

Update Студент SET Пол = 'мужской' WHERE Фамилия = 'Литвинков'

Выдается ошибка, т.к. нет разрешения.

Рисунок 7. Ошибка из-за недоступности привилегий.

Попробуем изменить то, что разрешено.

Рисунок 8. Таблица «Льгота» до изменения.

EXECUTE AS LOGIN = 'SadBoy'

Update Льгота SET ДатаВыдачи = '20000506' WHERE НомерСтуденческого = '1032'

Изменение прошло успешно.

Рисунок 9. Таблица «Льгота» после изменения.

  1. Вывод

Получили навыки создания пользователей, назначения им ролей и привилегий в MS SQL Server.

Соседние файлы в предмете Базы данных