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

ud / lab5

.docx
Скачиваний:
8
Добавлен:
09.04.2015
Размер:
79.26 Кб
Скачать

Министерство образования и науки Российской Федерации

Московский государственный университет печати имени Ивана Фёдорова

Кафедра медиасистемы и технологии

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

По дисциплине «Управление данными»

Выполнил: студент группы ДЦИТД 4-1 Ананьев Ф.С.

Проверил: старший преподаватель Куракин П.В.

Москва 2012 г.

Постановка задачи

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

Ход выполнения

В первую очередь я создал базу данных лабораторной работы: lab_base3:

CREATE database lab_base3;

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

DROP TABLE IF EXISTS salespeople, customers;

CREATE TABLE salespeople

(snum INT,

sname TEXT NOT NULL,

city TEXT,

comm DECIMAL(5,5),

primary key (snum)) engine = MyIsam Default charset = utf8;

Таблица была заполнена данными:

INSERT INTO salespeople

(snum, sname, city, comm) VALUES

(1, "Иван Жадов", "Нижний Новгород", "0.12"),

(2, "Федор Захапов", "Нижний Новгород", "0.15"),

(3, "Максим Хитров", "Нижний Новгород", "0.14"),

(4, "Алиса Тырь", "Бор", "0.10");

Так программа DreamCoder представила таблицу в заполненном состоянии:

snum

sname

city

comm

1

Иван Жадов

Нижний Новгород

0,12

2

Федор Захапов

Нижний Новгород

0,15

3

Максим Хитров

Нижний Новгород

0,14

4

Алиса Тырь

Бор

0,1

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

CREATE TABLE customers

(cnum INT,

cname TEXT NOT NULL,

city TEXT,

rating INT,

snum INT,

PRIMARY KEY(cnum)) engine = MyIsam DEFAULT CHARSET = utf8;

INSERT INTO customers

(cnum, cname, city, rating, snum) VALUES

(1, "Василий Дубов", "Нижний Новгород", 60, 2),

(2, "Алексей Шмыга", "Нижний Новгород", 830, 3),

(3, "Лариса Тупакова", "Нижний Новгород", 520, 3),

(4, "Петр Быков", "Бор", 30, 4),

(5, "Антон Тотуттотам", "Бор", 120, 4);

cnum

cname

city

rating

snum

1

Василий Дубов

Нижний Новгород

60

2

2

Алексей Шмыга

Нижний Новгород

830

3

3

Лариса Тупакова

Нижний Новгород

520

3

4

Петр Быков

Бор

30

4

5

Антон Тотуттотам

Бор

120

4

Работа с пользователями

Далее приведен скрипт, который должен был создать нового пользователя Q с паролем «123456», имеющего право выполнять выборки из таблицы customers:

CREATE USER Q;

GRANT SELECT on customers to Q identified by "123456";

Однако после отправки запросов в такой формулировке система работала совсем не в таком виде, каким должна была согласно указаниям к лабораторной работе и правилам SQL. Позже удалось понять, что для корректной работы скрипта в него надо внести небольшие изменения:

CREATE USER 'Q'@'localhost';

GRANT SELECT on customers to 'Q'@'localhost' identified by "123456";

После выполнения скрипта в окне Object navigator, в разделе Users, появилась строка Q. Это значит, что пользовательQ успешно создан.

Далее я подключился к базе данных от имени пользователя Q, введя в поле пароля строку «123456»:

Я попробовал произвести несколько запросов. Первый запрос — на вставку строки:

INSERT into customers

(cnum, cname, city, rating, snum) VALUES

(6, "Ndhfkl Nfdf", "Бор", 100, 4);

В выполнении запроса было отказано в связи с ошибкой:

Второй запрос — на удаление строки:

DELETE FROM customers

WHERE cnum = 1;

В выполнении этого запроса тоже было отказано:

Третий запрос — на просмотр данных в таблице:

SELECT * FROM customers;

Запрос был выполнен, содержимое таблицы customers — показано.

Далее я снова подключился к базе данных как root и выполнил запрос, наделяющий пользователя Q правами на запросы вставки и удаления данных из таблицы покупателей:

GRANT INSERT on customers to 'Q'@'localhost';

GRANT DELETE on customers to 'Q'@'localhost';

После этого я подключился к базе данных как пользователь Q и отправил те же верхние три запроса:

INSERT INTO customers

(cnum, cname, city, rating, snum) VALUES

(6, "Ndhfkl Nfdf", "Бор", 100, 4);

DELETE FROM customers

WHERE cnum = 1;

SELECT * FROM customers;

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

cnum

cname

city

rating

snum

2

Алексей Шмыга

Нижний Новгород

830

3

3

Лариса Тупакова

Нижний Новгород

520

3

4

Петр Быков

Бор

30

4

5

Антон Тотуттотам

Бор

120

4

6

Ndhfkl Nfdf

Бор

100

4

Вывод

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

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