Главная страница

бд. бд БАНК_ЗАДАНИЙ. Удаленный доступ к базе с любого хоста


Скачать 0.91 Mb.
НазваниеУдаленный доступ к базе с любого хоста
Дата08.10.2021
Размер0.91 Mb.
Формат файлаdocx
Имя файлабд БАНК_ЗАДАНИЙ.docx
ТипДокументы
#243833
страница1 из 8
  1   2   3   4   5   6   7   8


  1. Удаленный доступ к базе с любого хоста

'user'@'%'

% - это подстановочный знак

вы также можете сделать '%.domain.com' или '%.123.123.123' 

Это позволяет пользователю обращаться к серверу MySQL с любых компьютеров сети.

  1. Для проверки посмотрим список пользователей:

SELECT user,host,passwordfrommysql.user;

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

DROP USER'us1'@'localhost';
ЗАДАНИЕ 20.1.О

  1. Создайте несколько пользователей.

  2. Создайте пользователей с удаленным доступом.

  3. Просмотрите список пользователей.

  4. Удалите созданных пользователей.


РАБОТА 21.О

«Реализация доступа пользователей к базе данных»

Формируемые/проверяемые умения

Формируемые/проверяемые знания

Обеспечивать информационную безопасность на уровне базы данных

Способы контроля доступа к данным и управления привилегиями

Время выполнения задания – 90 минут.

Уровень сложности работы – 2

Необходимое оборудование, материалы, документация: ПК, МУ по выполнению практических работ.

КРИТЕРИИ ОЦЕНИВАНИЯ РАБОТЫ КРИТЕРИИ ВЫСТАВЛЕНИЯ ОЦЕНКИ


Наименование показателей

Количество баллов

Даны привилегии пользователям

2

Даны все права какому-либо пользователю

2

Выполнена команда просмотра всех привилегий пользователя

1

Отменены права пользователя

3

Создан суперпользователь

2

Максимальное количество баллов

10

Баллы

Оценка

10-9

отлично

8

Хорошо

7

Удовлетворительно


СОДЕРЖАНИЕ РАБОТЫ

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

21.ТТиповое задание

ХОД ВЫПОЛНЕНИЯ ТИПОВОО ЗАДАНИЯ Т.21

  1. Дать права пользователю MySQL на обновление и добавление записей для базы данных test_database, выполните:

GRANT SELECT, UPDATE, INSERT ON test_database . * TO 'test_user'@'localhost';

  1. Дать этому же пользователю:

GRANT ALL PRIVILEGES ON test_database .* TO 'test_user'@'localhost';

  1. Посмотреть привилегии пользователя:

SHOW GRANTS FOR 'test_user'@'localhost';

  1. Отменить права у пользователя MySQL

REVOKE INSERT, DELETE, UPDATE ON Hotels.AllHotels FROM 'user'@'host';
Заберём все права на базу данных test_database у нашего пользователя:

REVOKE ALL PRIVILEGES ON test_database .*

FROM 'test_user'@'localhost';

  1. Создать суперпользователя

Если вам необходимо создать пользователя со всеми правами MySQL на замену для root, то можно использовать такую конструкцию:

GRANT ALL PRIVILEGES ON * . * TO 'test_user'@'localhost';

Даём все привилегии для пользователя test_user над всеми базами данными и всеми таблицами. Но наш пользователь не сможет давать права другим пользователям. Чтобы это исправить, нужно дать ему привилегию GRANT, адляэтогоиспользуетсятакаякоманда:

GRANTALLPRIVILEGESON* .* TO 'test_user'@'localhost' WITH GRANT OPTION;

Теперь этот пользователь является суперпользователем для MySQL и, авторизовавшись от его имени вы можете делать всё то же самое, что и с помощью root.

ЗАДАНИЕ 21.1.О

1. Проверить отсутствие пользователя @localhost на сервере.

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

  1. Пользователь US1 (пароль uzaba) получает привилегии на добавление, редактирование, удаление всех полей таблицы.

  2. Пользователь US1 (пароль тот же) получает привилегии чтения всех таблиц баз данных db_utf8, db_cp1251.

  1. Пользователь read (пароль readb) получает привилегии чтения всех таблиц баз данных.

  2. Пользователь sman (пароль sales) получает привилегии на добавление, редактирование, удаление всех полей одной из таблиц таблиц.

  3. Пользователь sman (пароль тот же) получает привилегии чтения всех таблиц базы данных.

3.      Получить всю информацию из таблиц, связанную с этими новыми пользователями, написав соответствующие запросы.

4.      Проверить работоспособность созданных учетных записей, выполняя разрешенные и запрещенные действия для каждой учетной записи.

5. Отменить какие-либо привилегии пользователей

6. Проверить работоспособность созданных учетных записей, выполняя разрешенные и запрещенные действия для каждой учетной записи.

РАБОТА 22.О

«Создание представлений»

Формируемые/проверяемые умения

Формируемые/проверяемые знания

Создавать объекты баз данных в современных СУБД

Обеспечивать информационную безопасность на уровне базы данных

Способы контроля доступа к данным и управления привилегиями

Время выполнения задания – 90 минут.

Уровень сложности работы – 2

Необходимое оборудование, материалы, документация: ПК, МУ по выполнению практических работ.

КРИТЕРИИ ОЦЕНИВАНИЯ РАБОТЫ КРИТЕРИИ ВЫСТАВЛЕНИЯ ОЦЕНКИ


Наименование показателей

Количество баллов

Создано представление, основанное на запросе с использованием операторов сравнения и логических операторов.

1

Создано представление, основанное на использовании специальных операторов в запросе.

1

Создано представление, основанное на запросе с вычислимыми полями и полями с форматированием данных.

2

Создано представление, основанное на запросе с соединением таблиц.

3

Создано представление с группировкой данных в запросе.

3

Максимальное количество баллов

7

Баллы

Оценка

10-9

отлично

8

Хорошо

7

Удовлетворительно


СОДЕРЖАНИЕ РАБОТЫ

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

22.Т Типовое задание

  1. Создать представления, основанные на запросе с использованием операторов сравнения и логических операторов.

  2. Создать представления, основанные на использовании специальных операторов в запросе.

  3. Создать представление, основанные на запросе с вычислимыми полями и полями с форматированием данных.

  4. Создать представления, основанные на запросе с соединением таблиц.

  5. Создать представления с группировкой данных в запросе.

ХОД ВЫПОЛНЕНИЯ ТИПОВОО ЗАДАНИЯ 22.Т

  1. Вывести те филиалы, которые выполнили максимальное количество заказов в каждом месяце за последние полгода.

Данный запрос можно выполнить, используя дополнительную таблицу (лучше, если это будет VIEW, поскольку данные в нем автоматически обновляются, а в таблице нет)

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

CREATE VIEW sum_orders

AS

SELECT count(ID_Order) AS amount,id_point,month(`order`.order_date) AS month

FROM `order`

WHERE `order`.order_date > date_sub(now() , INTERVAL 6 month)

GROUPBY 2, 3;



Теперь выполним запрос, требуемый в задании:

SELECT amount, id_point, month

FROM sum_orders a

WHERE amount = (SELECT max(amount)

FROM sum_orders b

WHERE a.month = b.month

GROUP BY b.month)

AND month(now()) - month < 6

  1. Создадим представление, в котором покажем какое количество продано каждого вида продукции.

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

CREATE VIEW products_bought

AS

SELECT product.Name, sum(Amount) AS Amount

FROM `order-product`, `order`, product

WHERE lr.`order-product`.Order_ID = lr.`order`.ID_order

AND lr.`order-product`.Product_ID = lr.product.ID_prod

GROUP BY name;





  1. Создать представление, содержащее вычислимые поля и поля с форматированием данных.

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

В названии столбцов также используем алиасы. В функции group_counat мы использовали команду dictinct, чтобы выводить каждый вид продукции только один раз, а не столько раз, сколько он был заказан.

CREATE VIEW products_by_month

AS

SELECT month(`order`.order_date) AS month,

GROUP_CONCAT(DISTINCT product.Name) AS Assortment,

sum(product.Price * `order-product`.Amount) AS Amount

FROM `order-product`, `order`, product

WHERE lr.`order-product`.Order_ID = lr.`order`.ID_order

AND lr.`order-product`.Product_ID = lr.product.ID_prod

GROUPBY 1;





  1. Создать представление, согласно требованиям, представленным в задании.

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





  1. Для каждого заказчика вести историю заказов в следующем виде: имя клиента, дата первого заказа, дата последнего заказа, виды заказанной продукции и общее их количество через запятую в формате: «продукция1 – количество, продукция2 – количество…», общая сумма заказов.

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

CREATE VIEW products_by_clients

AS

SELECT client.ID_client,client.name AS Client,order-product.Product_ID,

product.Name AS Product,sum(order-product.Amount) AS Amt,

sum(product.Price *order-product.Amount) AS Total

FROM client,order,order-product,product

WHERE lr.order-product.Order_ID = lr.order.ID_order

AND client.ID_client = order.ID_client

AND lr.order-product.Product_ID = lr.product.ID_prod

GROUP BY client.ID_client, order-product.Product_ID;





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

CREATE VIEW clients_orders

AS

SELECT Client,

min(order_date) AS First_order,

max(order_date) AS Last_order,

GROUP_CONCAT(DISTINCT Product, " - ", B.Amt) AS Assortment,

sum(Total) AS Total

FROM order A, products_by_clients B

WHERE A.ID_client = B.ID_client

GROUP BY B.ID_client;



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






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

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

Создадим представление, в котором будут представлены нужные данные о заказе:

CREATE VIEW orders

AS

SELECT order_id,

`order`.exec_date AS ex_date,

`order`.ID_point AS point,

product.Price * `order-product`.Amount AS summa

FROM `order-product`, `order`, product

WHERE `order-product`.Order_ID = `order`.ID_order

AND `order-product`.Product_ID = product.ID_prod;

  1. Создать представление с соединением таблиц.

Создадим представление, в котором покажем какое количество продано каждого вида продукции.

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

CREATE VIEW products_bought

AS

SELECT product.Name, sum(Amount) AS Amount

FROM `order-product`, `order`, product
  1   2   3   4   5   6   7   8


написать администратору сайта