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

1 / 8

.docx
Скачиваний:
1
Добавлен:
16.05.2025
Размер:
1.86 Mб
Скачать

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

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

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

Кафедра 41

ПРЕПОДАВАТЕЛЬ

Доцент, канд. техн. наук

Е. Л. Турнецкая

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

Лабораторная работа №8

Пользовательские привилегии

по курсу: Базы данных

СТУДЕНТКА ГР. №

Z0411

14.05.23

М. В. Карелина

номер группы

подпись, дата

инициалы, фамилия

Номер студенческого билета: 2020/3477

Санкт-Петербург

2023

Цель работы:

получение практических навыков по администрированию СУБД MySQL

Порядок выполнения работы

1. Внимательно изучите материалы раздела.

2. Выполните упражнения по администрированию СУБД с помощью консольного клиента и программными средствами приложения MySQL Workbench.

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

4. Назначьте права доступа каждому пользователю. Среду выполнения администрирования выберите самостоятельно. Команды в отчете должны быть представлены в текстовом формате. Результаты их выполнения в виде скриншотов с поясняющими подписями. Не забывайте вручную обновлять настройки сервера, чтобы продемонстрировать изменения. В обязательном порядке должны присутствовать следующие команды.

4.1. Создание пользователя

CREATE USER 'user2' IDENTIFIED BY '123456';

Присвоение всех привилегий во всех БД и таблицах

4.2. Создание пользователя без привилегий

CREATE USER 'user3' IDENTIFIED BY '123456';

GRANT USAGE ON *.* TO user3 WITH GRANT OPTION;

4.3. Просмотр прав пользователей

USE mysql;

SELECT * FROM user;

4.4. Передача выборочных прав пользователю

GRANT SELECT,INSERT, UPDATE,DELETE, CREATE, ALTER, DROP

ON *.*

TO user2

WITH GRANT OPTION;

4.5. Удаление привилегий для одного пользователя.

REVOKE ALL PRIVILEGES ON *.* FROM 'user2';

5. Создайте 2 роли и назначьте на них пользователей: один пользователь на одну роль и несколько - на другую.

6. Покажите список ролей на доступ к БД.

7. Добавьте еще две команды самостоятельно.

Вариант 8

Обслуживание рейсов в аэропорту

Аэропорт обслуживает рейсы разных авиакомпаний. У каждой авиакомпании есть несколько рейсов. Авиакомпании предоставляют самолеты различного типа (вместимости). Самолеты характеризуются типом, годом выпуска, количеством мест и фирмой-производителем. В один город могут быть несколько рейсов в разное время, осуществляемых различными авиакомпаниями. Самолеты обслуживаются экипажем: 27 командир корабля, второй пилот, штурман, бортинженер и стюардессы. О сотрудниках хранится следующая информация: Ф.И.О., должность, квалификация, экипаж. Рейс имеет свой номер, пункт отправления, пункт прибытия, время вылета, время в пути, тип самолета, название авиакомпании, обслуживающей данный рейс. Билет на самолет имеет свой номер и № рейса, ФИО пассажира, № места, стоимость, дата продажи, дата бронирования. Пассажир, приобретая билет на самолет, сообщает о себе паспортные данные. Клиент может забронировать билет по Интернету и выкупить его за 3 часа до вылета.

В данной лабораторной работе будет использована модель данных, спроектированная в прошлых работах (Рис. 1).

Рисунок 1 - Модель данных в среде MySQL Workbench

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

Пользователи, имеющие доступ к данным, объединены в группы с определенными ролями: администратор данных, администратор БД, пользователь БД, гость и т.д. При подключении нового пользователя ему назначают именно роль, права доступа которой будут определять пользовательские привилегии.

Привилегия (privilege) – разрешение на использование определенной услуги управления данными для доступа к объекту данных, предоставляемое идентифицированному пользователю.

Роль – это именованная совокупность привилегий, которые могут быть предоставлены пользователям или другим ролям. В зависимости от уровня привилегий пользователи обладают разными правами на один и тот же объект: одни могут лишь просматривать данные, другие – только добавлять, третьи – осуществлять чтение, вставку и запись.

Упражнение. Просмотр всех пользователей с помощью системной таблицы БД mysql.

Откроем консольный клиент Command Line Client – Unicode.

Введем пароль (Рис. 2) и начнем взаимодействие с сервером.

Рисунок 2 - Подключение к серверу

Используем системную БД mysql, в которой указаны все авторизованные пользователи (Рис. 3):

mysql> use mysql;

Database changed

mysql> select user, host from user;

Рисунок 3 - Просмотр авторизованных пользователей

Выполним команду:

mysql> SELECT * FROM mysql.user\G;

Фрагменты ответа сервера показаны на Рис. 4-5.

mysql> SELECT * FROM mysql.user\G;

Рисунок 4 - Фрагмент ответа сервера по привилегиям пользователя Gviqli

Рисунок 5 - Фрагмент ответа сервера по привилегиям пользователя root

Посмотрим список глобальных привилегий (Рис. 6):

SELECT * FROM information_schema.user_privileges;

Рисунок 6 - Просмотр глобальных привилегий

Выведем список привилегии на базы данных (Рис. 7):

mysql> SELECT * FROM mysql.db\G;

Модификатор \G оптимизирует вывод для отображения в консоли.

Рисунок 7 - Фрагмент списка привилегии на базы данных

Просмотрим права, назначенные на таблицы (Рис. 8).

SELECT * FROM mysql.tables_priv;

Рисунок 8 - Права пользователей на таблицы

Посмотрим права, назначенные на поля (Рис. 9).

SELECT * FROM mysql.columns_priv;

Рисунок 9 - Отсутствие прав доступа пользователей к полям

Упражнение. Проверка полномочий к данным через БД information_schema.

Через БД information_schema, доступной только для чтения, узнают множество метаданных – системной информации. Информация о доступе на БД (схемы), таблицы и столбцы доступны в таблицах schema_privileges, table_privileges и column_privileges.

Выполним запрос по проверке привилегий к БД (Рис. 10).

SELECT * FROM information_schema.schema_privileges;

Рисунок 10 - Просмотр привилегий к БД information_schema

Выполним запрос по проверке привилегий по доступу к таблицам БД information_schema (Рис. 11).

SELECT * FROM information_schema.table_privileges;

Рисунок 11 - Просмотр прав доступа к таблицам БД information_schema

Выполним запрос по проверке привилегий по доступу к полям БД.

SELECT * FROM information_schema.column_privileges;

Рисунок 12 - Отсутствие привилегий по доступу пользователей к полям

Выполним запрос по проверке привилегий по доступу к таблицам этой БД для конкретного пользователя, например, mysql.sys@localhost (Рис. 13).

SELECT * FROM information_schema.column_privileges WHERE GRANTEE="'mysql.sys'@'localhost' ";

Рисунок 13 - Отсутствие привилегий по доступу пользователя к полям

Упражнение. Предоставление доступа пользователю MySQL

Доступ предоставляется командами:

GRANT SELECT

ON `some_db`.*

TO 'some_user'@'somehost.somedomain';

FLUSH PRIVILEGES;

Создадим БД test_db. Добавим пользователя test_user, который работает только на локальном сервере (localhost) с правами на выполнение выборок данных из БД с помощью инструкции SELECT.

CREATE SCHEMA testt_DB;

CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'secrett';

Выполним команды для предоставления доступа (Рис. 14).

GRANT SELECT ON `testt_DB`.* TO 'test_user'@'localhost';

FLUSH PRIVILEGES;

Рисунок 14 - Реализация прав пользователя test_user@localhost

Проверим запись о наличии нового пользователя в БД mysql (Рис. 15).

USE mysql;

SELECT user, host FROM user;

Рисунок 15 - Запись о новом пользователе в системной БД mysql

Упражнение. Проверка текущих полномочий пользователя.

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

Для просмотра привилегий выполним команду (Рис. 16).

USE testt_db;

SHOW GRANTS FOR 'test_user'@'localhost';

Рисунок 16 - Список привилегий пользователя test_user@localhost

Предоставим права на таблицу table_users.

Добавим в БД новую таблицу:

CREATE TABLE `testt_db`.`table_userss` (id INT AUTO_INCREMENT PRIMARY KEY, user_name VARCHAR(20) NOT NULL, password VARCHAR(32));

Выдадим права доступа пользователю.

GRANT SELECT ON `testt_db`.`table_userss` TO 'test_user'@'localhost';

Предоставим доступ к столбцу:

GRANT SELECT (id, user_name), UPDATE (user_name) ON `testt_db`.`table_users` TO 'test_user'@'localhost';

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

Проверим права пользователя (Рис. 17).

SHOW GRANTS FOR 'test_user'@'localhost'\G;

Рисунок 17 - Просмотр новых привилегий пользователя test_user@localhost

Упражнение. Смена пароля.

Для изменения пароля учетной записи пользователя применим команду ALTER USER (Рис. 18):

ALTER USER 'test_user'@'localhost' IDENTIFIED BY 'new_password';

Рисунок 18 - Смена пароля

Упражнение. Отзыв полномочий у пользователя.

REVOKE SELECT ON 'somedb'.* FROM 'someuser'@'somehost';

***************************

REVOKE ALL PRIVILEGES ON 'somedb'.* FROM 'someuser'@'somehost';

***************************

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'someuser'@'somehost';

Отзовем все привилегии у пользователя 'test_user'@'localhost'

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'test_user'@'localhost';

Проверим права пользователя (Рис. 19).

SHOW GRANTS FOR 'test_user'@'localhost'\G;

Рисунок 19 - Удаление прав пользователя

Упражнение. Удаление пользователя.

Для удаления пользователя используется команда

DROP USER 'some_user'@'somehost.somedomain';

Выполним команды по удалению пользователя:

DROP USER 'test_user'@'localhost';

FLUSH PRIVILEGES;

Проверим список пользователей в системной БД mysql (Рис. 20):

use mysql;

select user, host from user;

Рисунок 20 - Результат выполнения команды по удалению пользователя

Упражнение. Реализация БД на сервере на принципах low-code

Запустим MySQL Workbench.

Осуществим подключение к серверу БД графического клиента MySQL Workbench. Перейдем на вкладку подключения.

На панели Shemas нажмем ПКМ и в контекстном меню выберем Create Shemas (Рис. 21).

Рисунок 21 - Создание новой схемы данных

В открывшемся окне введем название новой БД: new_schema и выставим следующие параметры (Рис. 22).

Charset:utf8, Collation:utf8_general_ci.

Рисунок 22 - Определение параметров новой БД new_schema

Нажмем кнопку Apply. После автогенерации программного кода по созданию БД нажмем Apply. В новом окне мастера генерации скрипта выведена информация об успешном выполнении команды: Execute SQL Statements. Нажмем Finish.

Обновим список БД на сервере и найдите в нем созданную БД (Рис. 23).

Рисунок 23 - Результат создания БД на принципах low-code

Упражнение. Администрирование пользователей в среде MySQL Workbench

Перейдем на вкладку Administration (Рис. 24).

Рисунок 24 - Вкладка Administration

В разделе MANAGMENT активируем Users and Privileges (Рис. 25). На рисунке показано, что пользователь root обладает привилегией подключения с localhost во время сеанса с сервером.

Рисунок 25 - Исходные данные по пользователям и привилегиям

Добавим нового пользователя по доступу к БД new_schema. Нажмем на кнопку Add Account.

На вкладке Login установим параметры для нового пользователя, введя имя пользователя NARUTO и пароль (Рис. 26).

Рисунок 26 - Установка параметров для подключения нового пользователя

Перейдем на вкладку Administrative Roles (Рис. 27). Изучим списки предлагаемых по умолчанию ролей пользователя и глобальных привилегий. Для выбора ролей пользователя достаточно поставить галочку в чекбокс напротив названия роли. Ничего не отмечаем на этой вкладке, только внимательно изучим предлагаемые варианты.

Рисунок 27 - Список предлагаемых по умолчанию ролей пользователя

Перейдем на вкладку Shemas Privileges, чтобы самостоятельно определить набор привилегий нового пользователя. Добавление привилегий происходит в несколько этапов.

Нажмем на кнопку Add Entry.

Выберем БД из выпадающего списка всех БД на сервере ту, к которой будет доступ у нового пользователя, в частности new_schema (Рис. 28).

Рисунок 28 - Выбор БД, на которую будут выданы разрешения пользователю

Определим разрешения (Рис. 29) и нажмем Apply.

Рисунок 29 - Установление прав на манипулирование и создание объектов БД

Откроем вкладку для создания нового запроса.

Выполним команды:

use new_schema;

SHOW GRANTS FOR 'NARUTO'@'%';

На Рис. 30 показан результат выполнения инструкций.

Рисунок 30 - Просмотр прав пользователя newuser на работу с БД

Таким образом, рассмотрены варианты администрирования СУБД MySQL двумя способами: с помощью консольного клиента и программными средствами приложения MySQL Workbench.

Теперь на основе анализа предметной области Автосалон выявим троих пользователей с разными привилегиями: администратор БД, который занимается поддержкой данной ИС и обладает всеми привилегиями, операционный директор, который ведет учет сотрудников, определяет им заработную плату, а также вносит в базу информацию о поступлениях товара в автосалон, продавец-консультант, который должен обладать информацией о наличии товара на складе и его количестве, а также добавлять в базу информацию о сделках и клиентах и бизнес-аналитик, который может только просматривать данные (и пользоваться процедурами и функциями).

Создадим этих пользователей и назначим права доступа каждому пользователю. Для этого воспользуемся программными средствами приложения MySQL Workbench.

Создание администратора БД:

use `аэропорт`;

create user 'admin'@'localhost' identified by 'admin';

grant all privileges on `аэропорт`.* to 'admin'@'localhost';

Создание операционного директора:

use `аэропорт`;

create user 'director'@'%' identified by 'director';

grant select, insert, update, delete, trigger on `аэропорт`.`сотрудники` to 'director'@'%';

grant select, insert, update, delete, trigger on `аэропорт`.`скидка` to 'director'@'%';

grant select, insert, update, delete, trigger on `аэропорт`.`авиакомпания` to 'director'@'%';

grant select, insert, update, delete, trigger on `аэропорт`.`самолет` to 'director'@'%';

grant select, insert, update, delete, trigger on `аэропорт`.`рейс` to 'director'@'%';

grant select on `аэропорт`.`билет` to 'director'@'%';

grant select on `аэропорт`.`пассажиры` to 'director'@'%';

grant execute on `аэропорт`.* to 'director'@'%';

Создание менеджера по продажам:

use `аэропорт`;

create user 'salesman'@'%' identified by 'salesman';

grant select on `аэропорт`.`авиакомпания` to 'salesman'@'%';

grant select on `аэропорт`.`рейс` to 'salesman'@'%';

grant select on `аэропорт`.`самолет` to 'salesman'@'%';

grant select, insert, update, delete, trigger on `аэропорт`.`пассажиры` to 'salesman'@'%';

grant select, insert, update, delete, trigger on `аэропорт`.`билет` to 'salesman'@'%';

grant execute on `аэропорт`.* to 'salesman'@'%';

Создание аналитика:

use `аэропорт`;

create user 'analitic'@'%' identified by 'analitic';

grant select on `аэропорт`.* to 'salesman'@'%';

grant execute on `аэропорт`.* to 'analitic'@'%';

Просмотрим всех пользователей (Рис. 31).

USE mysql;

SELECT * FROM user;

Рисунок 31 - Просмотр всех пользователей и их прав

Заберем у бизнес-аналитика все права, а потом «уволим» его и заблокируем ему доступ в БД.

REVOKE ALL PRIVILEGES ON `аэропорт`.* FROM 'analitic'@'%';

DROP USER 'analitic'@'%';

FLUSH PRIVILEGES;

Просмотрим теперь всех пользователей (Рис. 32).

USE mysql;

SELECT * FROM user;

Рисунок 32 - Просмотр всех пользователей и их прав

Создадим пользователя без привилегий, а затем удалим его.

CREATE USER 'kiba'@'%' IDENTIFIED BY '1234';

GRANT USAGE ON *.* TO 'kiba'@'%' WITH GRANT OPTION;

DROP USER 'kiba'@'%';

FLUSH PRIVILEGES;

Создадим две роли – директор и менеджера по продажам – и назначим на роль директора одного пользователя, а на роль менеджера – двоих пользователей (из уже созданного списка продавцов:

use `аэропорт`;

create role if not exists 'director';

grant select, insert, update, delete, trigger on `аэропорт`.`самолет` to 'director';

grant select, insert, update, delete, trigger on `аэропорт`.`скидка` to 'director';

grant select, insert, update, delete, trigger on `аэропорт`.`рейс` to 'director';

grant select, insert, update, delete, trigger on `аэропорт`.`сотрудники` to 'director';

grant select, insert, update, delete, trigger on `аэропорт`.`авиакомпания` to 'director';

grant select on `аэропорт`.`пассажиры` to 'director';

grant select on `аэропорт`.`билет` to 'director';

grant execute on `аэропорт`.* to 'director';

create role if not exists 'salesman';

grant select, trigger on `аэропорт`.`авиакомпания` to 'salesman';

grant select on `аэропорт`.`рейс` to 'salesman';

grant select on `аэропорт`.`самолет` to 'salesman';

grant select, insert, update, delete, trigger on `аэропорт`.`пассажиры` to 'salesman';

grant select, insert, update, delete, trigger on `аэропорт`.`билет` to 'salesman';

grant execute on `аэропорт`.* to 'salesman';

create USER 'hokage'@'%' IDENTIFIED BY 'lista';

CREATE USER 'aburame'@'%' IDENTIFIED BY 'shino';

CREATE USER 'nara'@'%' IDENTIFIED BY 'shikamaru';

GRANT 'director' TO 'hokage'@'%';

GRANT 'salesman' TO 'aburame'@'%', 'nara'@'%';

Рисунок 33 - Список ролей и пользователей

Вывод

В ходе выполнения данной лабораторной работы были получены практические навыки по администрированию СУБД MySQL с помощью консольного клиента и программными средствами приложения MySQL Workbench. На основе анализа предметной области Аэропорт было выявлено четыре пользователя с разными привилегиями: администратор БД, который занимается поддержкой данной ИС и обладает всеми привилегиями, операционный директор, который ведет учет сотрудников и вносит в базу информацию о самолетах, рейсах и авиакомпаниях, менеджер по продажам, который должен обладать информацией о пассажирах, рейсах, самолетов и авиакомпаниях, а также оформлять билеты. Также мы создали две роли и назначили на них созданных пользователей.

Особых проблем при выполнении данных работ не возникло.

Соседние файлы в папке 1