42299

Использование СУБД MySQL

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

Информатика, кибернетика и программирование

База данных представляет собой структурированную совокупность данных. Эти данные могут быть любыми - от простого списка предстоящих покупок до перечня экспонатов картинной галереи или огромного количества информации в корпоративной сети. Для записи, выборки и обработки данных, хранящихся в компьютерной базе данных, необходима система управления базой данных, каковой и является ПО MySQL

Русский

2013-10-28

7.45 MB

9 чел.

Московский государственный институт электроники и математики

(технический университет)

Кафедра электронно-вычислительной аппаратуры




Отчёт по лабораторной работе №3:

«Использование  СУБД MySQL»

По дисциплине «Базы Данных»







Выполнили студенты гр. С-55:
Алексеев А.С.

Масленников А.А.

Мусатов В.И.

Преподаватель:

д.т.н. профессор Зарудный Д.И.


Москва – 2004


Оглавление

[1]
1. ВВЕДЕНИЕ

[1.1] Что такое MySQL ?

[1.2] 1.2. Основные достоинства MySQL

[1.3] 1.3. Ввод запросов

[2]
2. Задание на лабораторную работу

[3]
3. Подготовка к выполнению

[4] 4. ВЫПОЛНЕНИЕ

[4.1] СОЗДАНИЕ БАЗЫ ДАННЫХ

[4.1.1] Запрос1. Создание новой базы данных

[4.2] 4.2. СОЗДАНИЕ ТАБЛИЦЫ

[4.2.1] Запрос2. Создание новой таблицы

[4.3] 4.3. добавление данных в таблицу

[4.3.1] Запрос 3. Добавление записей в таблицу

[4.3.2] Запрос 4. Копирование записей в другую таблицу

[5]
4.4. Выборка данных из таблицы

[5.0.1] Запрос 5. Выборка данных из таблицы по условию, наложенному, на столбец «Tehnicheskie_svoystva»

[5.0.2]
Запрос 6. Выборка записей из столбца подтип товара по минимальной и максимальной цене на товар.

[5.1] 4.5. ИЗМЕНЕНИЕ ДАННЫХ В ТАБЛИЦЕ

[5.1.1] Запрос 7. Увеличение цены цены в 1.5 раза

[5.1.2]
Запрос 8. Удаление столбца из таблицы

[5.1.3] Запрос 9. Добавление нового столбца в таблицу

[5.1.4]
Запрос 10. Добавление записей в отдельный столбец

[5.1.5] Запрос 11. Удаление записей из таблицы по заданному условию

[5.1.6] Запрос 12. Удаление всех записей из таблицы

[5.1.7] Запрос 13. Удаление таблицы

[5.2]
4.7. Защита данных в СУБД MySQL

[6] 5. Список используемой литературы:


1. ВВЕДЕНИЕ

  1.  Что такое MySQL ?

MySQL - это система управления базами данных.

База данных представляет собой структурированную совокупность данных. Эти данные могут быть любыми - от простого списка предстоящих покупок до перечня экспонатов картинной галереи или огромного количества информации в корпоративной сети. Для записи, выборки и обработки данных, хранящихся в компьютерной базе данных, необходима система управления базой данных, каковой и является ПО MySQL. Поскольку компьютеры замечательно справляются с обработкой больших объемов данных, управление базами данных играет центральную роль в вычислениях. Реализовано такое управление может быть по-разному - как в виде отдельных утилит, так и в виде кода, входящего в состав других приложений.

MySQL - это система управления реляционными базами данных.

В реляционной базе данных данные хранятся не все скопом, а в отдельных таблицах, благодаря чему достигается выигрыш в скорости и гибкости. Таблицы связываются между собой при помощи отношений, благодаря чему обеспечивается возможность объединять при выполнении запроса данные из нескольких таблиц. SQL как часть системы MySQL можно охарактеризовать как язык структурированных запросов плюс наиболее распространенный стандартный язык, используемый для доступа к базам данных.

Программное обеспечение MySQL - это ПО с открытым кодом.

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

1.2. Основные достоинства MySQL

Перечислим  основные достоинства пакета MySQL:

Многопоточность. Поддержка нескольких одновременных запросов.

Оптимизация связей с присоединением многих данных за один проход.

Записи фиксированной и переменной длины.

ODBC драйвер в комплекте с исходным текстом

Гибкая система привилегий и паролей.

До 16 ключей в таблице. Каждый ключ может иметь до 15 полей.

Поддержка ключевых полей и специальных полей в операторе CREATE.

Поддержка чисел длинной от 1 до 4 байт (ints, float, double, fixed), строк переменной длины и меток времени.

Интерфейс с языками C и perl.

Основанная на потоках, быстрая система памяти.

Утилита проверки и ремонта таблицы ( isamchk).

Все данные хранятся в формате ISO8859_1.

Все операции работы со строками не обращают внимания на регистр символов в обрабатываемых строках.

Псевдонимы применимы как к таблицам, так и к отдельным колонкам в таблице.

Все поля имеют значение по умолчанию. INSERT можно использовать на любом подмножестве полей.

Легкость управления таблицей, включая добавление и удаление ключей и полей.

1.3. Ввод запросов

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

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

Ниже приведена простая команда, запрашивающая у сервера информацию о его версии и текущей дате:

Этот запрос иллюстрирует следующие особенности mysql:

Команда обычно состоит из SQL-выражения, за которым следует точка с запятой. (Из этого правила есть и исключения - команды без точки с запятой. Одним из них является команда QUIT.)

Когда пользователь вводит команду, mysql отправляет ее серверу для выполнения и выводит на экран сначала результаты, а затем - новую строку mysql>, что означает готовность к выполнению новых команд.

mysql выводит результаты работы запроса в виде таблицы (строк и столбцов). В первой строке этой таблицы содержатся заголовки столбцов, а в следующих строках - собственно результаты. Обычно заголовками столбцов становятся имена, полученные из таблиц базы. Если же извлекается не столбец таблицы, а значение выражения (как это происходит в приведенном выше примере), mysql дает столбцу имя запрашиваемого выражения.

mysql сообщает количество возвращаемых строк и время выполнения запроса, что позволяет в некоторой степени составить представление о производительности сервера. Эти значения обычно весьма впечатляют, так как представляют обычное (а не машинное время), кроме того, на них оказывает влияние загрузка сервера и скорость работы сети

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

mysql> SELECT VERSION(), CURRENT_DATE;

mysql> select version(), current_date;

mysql> SeLeCt vErSiOn(), cuRRent_DaTE;


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

Вводить все команды в одну строку совсем не обязательно, так как создание длинных команд, занимающих несколько строк, не вызывает никаких проблем. Для mysql признаком завершения выражения является точка с запятой, а не конец строки (другими словами, mysql принимает команды без форматирования: строки с командами собираются, но не исполняются до тех пор, пока интерпретатор не обнаружит точку с запятой).

Если нужно отменить исполнение набираемой команды, можно дать команду \c:

После выполнения ввода команды \c , приглашение(prompt) снова принимает вид mysql>, показывая, что СУБД снова перешла в режим ожидания.


2. Задание на лабораторную работу

Целью данной лабораторной работы является получение навыков работы с базами данным средствами СУБД MySQL. Необходимо создать следующие виды запросов:

  1.  Запрос на создание базы данных
  2.  Запрос на создание таблицы
  3.  Запрос на добавление данных в таблицу
  4.  Запрос на выборку данных из таблицы
  5.  Запрос на изменение данных в таблице
  6.  Запрос на удаление данных из таблицы
  7.  Защита данных в СУБД MySQL


3. Подготовка к выполнению

Перед выполнением лабораторной работы сначала необходимо запустить сервер СУБД. Для этого следует в командной строке дать следующую команду (будем считать, что СУБД MySQL установлена на диск C: в папку \mysql):

c:\mysql\bin\mysqld-nt.exe --basedir c:/mysql

Также следует запустить клиентскую часть СУБД:

c:\mysql\bin\mysql.exe --user=root mysql

Параметр user=root необходим для того, чтоб получить привилегии пользователя root при работе с СУБД, в частности необходимую нам – CREATE DATABASE.

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

mysql> GRANT ALL PRIVILEGES ON *.* TO User_name@localhost

        -> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

где User_name – имя нового пользователя, some_pass – пароль.

Даем команду :

mysql> \q

После чего снова запускаем клиентскую часть MySQL, использую только что созданную учетную запись:

c:\mysql\bin\mysql.exe --user=User_name --password mysql

На экране должно появиться приглашение ввести пароль (в нашем примере это – some_pass):

Enter password: some_pass

После ввода появится примерно следующее:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 17 to server version: 4.0.21-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

То есть система перешла в интерактивный режим, и ожидает ввода запросов.

4. ВЫПОЛНЕНИЕ

  1.  СОЗДАНИЕ БАЗЫ ДАННЫХ

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

CREATE DATABASE <Название базы данных>;

Для подключения к БД служит команда USE:

USE <Название базы данных>;

Запрос1. Создание новой базы данных

 Пусть требуется создать и подключить базу данных laba3.

mysql> create database laba3; use laba3;

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

4.2. СОЗДАНИЕ ТАБЛИЦЫ

Таблицы базы данных создаются с помощью команды CREATE TABLE. Эта команда создает пустую таблицу. Команда CREATE TABLE определяет имя таблицы и множество поименованных столбцов в указанном порядке. Для каждого столбца должен быть определен тип и, если это необходимо, размер. Каждая создаваемая таблица должна иметь, по крайней мере,  один столбец.

Синтаксис команды CREATE TABLE имеет следующий вид:

CREATE TABLE <имя таблицы>

(<имя столбца> <тип данных>[(<размер>)]);

Запрос2. Создание новой таблицы

Пусть требуется создать таблицу Goods, содержащую информацию о продукции фирмы Planet  и имеющую поля:

Podtip_tovara

Kompaniya_proizvoditel

code

Tehnicheskie_svoystva

Tsena

Оператор определения таблицы может иметь следующий вид:

mysql> create table goods

        -> (Podtip_tovara char(20), Kompaniya_proizvoditel char(10), code char(10),

        -> Tehnicheskie_svoystva char(60), Tsena integer);

Дав команду mysql> describe goods , - получим информацию о созданной таблице:

Рис.1 Результат выполнения запроса 2

4.3. добавление данных в таблицу

Оператор вставки новых записей имеет форматы двух видов:

INSERT INTO <имя таблицы>

[(<список столбцов>)]

VALUES (<список значений>)

и

INSERT INTO <имя таблицы>

[(<список столбцов>)]

<предложение SELECT>

В первом формате оператор INSERT предназначен для ввода новых записей с заданными значениями в столбцах. Порядок перечисления имен столбцов должен соответствовать порядку значений, перечисленных в списке операнда VALUES. Если <список столбцов> опущен, то в <списке значений> должны быть перечислены все значения в порядке столбцов структуры таблицы.

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

Запрос 3. Добавление записей в таблицу

Создать запрос, добавляющий все записи таблицы Товар в таблицу Goods.

mysql> insert into goods values

("Bluetooth", "Planet", "Bluetooth 1.1", "732Kbps, 2.4GHz, 128-bit encryption", 10),

("Enterprise Serial Router", "Planet", "ERT-805", "WAN 1, Asyn 1, Access Control List, firewall, WPN", 675),

("Gateway", "Planet", "VIP-000", "2 slot up to 8, LAN 1, G.711(64k), VAD, Plar", 363),

("Phone", "Planet", "VIP-101T", "Hendset, LAN 2, G.711(64k), VAD", 235),

("Gateway", "Planet", "VIP-400", "2xFXS, 2xFXO, LAN 1, G.711(64k), VAD, Plar", 436),

("Gateway", "Planet", "VIP-410", "2xFXS, 2xFXO, LAN 4, NAT, G.711(64k), VAD, Plar", 522),

("Gateway", "Planet", "VIP-460", "2xFXS, 2xFXO, LAN 4, G.711(64k), VAD, Plar", 266),

("VPN Router", "Planet", "VRT-401", "LAN 4, WAN 1, DMZ 1, 100 tunnels, 22Mbps, IKE, DoS", 532),

("VPN Router", "Planet", "VRT-401S", "LAN 4, WAN 1, DMZ 1, 5 tunnels, 2.5Mbps, IKE, DoS", 255),

("Access Point", "Planet", "WAP-1963", "802.11b, LAN 1, MDR 11mbps, frq 2.4GHz", 252),

("Access Point", "Planet", "WAP-1963A", "802.11b, LAN 1, MDR 11mbps, frq 2.4GHz, Bridge", 435),

("Access Point", "Planet", "WAP-1966", "802.11b+, LAN 1, MDR 22mbps, frq 2.4GHz, Bridge", 235),

("Access Point", "Planet", "WAP-4000", "802.11g+, LAN 1, MDR 108mbps, frq 2.4GHz, Bridge", 344),

("Access Point", "Planet", "WAP-4030", "802.11g, LAN 1, MDR 54mbps, frq 2.4GHz", 651),

("Outdoor Bridge", "Planet", "WAP-5100", "802.11b, LAN 1, WEP 64-bit, Utility", 324),

("Access Point", "Planet", "WDAP-2000", "802.11a+g, LAN 1, MDR 54mbps, frq 5-2.4GHz, Bridge", 634),

("Card", "Planet", "WDL-3520", "PC, 802.11a+g, MDR 54mbps, frq 5-2.4GHz", 345),

("Card", "Planet", "WDL-8320", "PCI, 802.11a+g, MDR 54mbps, frq 5-2.4GHz", 252),

("Router", "Planet", "WDRT-200", "802.11a+g, LAN 4, MDR 54mbps, frq 5-2.4GHz", 876),

("Card", "Planet", "WL-3553", "PC, 802.11b, MDR 11mbps, frq 2.4GHz", 657),

("Card", "Planet", "WL-3555", "PC, 802.11b+, MDR 22mbps, frq 2.4GHz", 780),

("Card", "Planet", "WL-3560", "PC, 802.11g+, MDR 108mbps, frq 2.4GHz", 632),

("Card", "Planet", "WL-3563", "PC, 802.11g, MDR 54mbps, frq 2.4GHz", 256),

("Card", "Planet", "WL-8303", "PCI, 802.11b, MDR 11mbps, frq 2.4GHz", 253),

("Card", "Planet", "WL-8305", "PCI, 802.11b+, MDR 22mbps, frq 2.4GHz", 285),

("Card", "Planet", "WL-8310", "PCI, 802.11g+, MDR 108mbps, frq 2.4GHz", 253),

("Router", "Planet", "WRT-410", "802.11g+, LAN 4, MDR 108mbps, frq 2.4GHz", 255),

("Router", "Planet", "WRT-413", "802.11g, LAN 4, MDR 54mbps, frq 2.4GHz", 235),

("Broadband Router", "Planet", "XRT-204D", "LAN 1, WAN 4, 253 users, DMZ, Virtual server, SPI", 232),

("Broadband Router", "Planet", "XRT-402D", "LAN 4, WAN 2, 253 users, DMZ, Virtual server, SPI", 353),

("Broadband Router", "Planet", "XRT-410D", "LAN 4, WAN 1, 253 users, DMZ, Virtual server, SPI", 345);

Можно посмотреть результат выполнения этого запроса:

Рис.2 Результат выполнения запроса 3

Запрос 4. Копирование записей в другую таблицу

Создать таблицу Goods_1 и скопировать в нее все записи таблицы Goods.

mysql> create table goods_1

       -> (Podtip_tovara char(20), Kompaniya_proizvoditel char(10), code char(10),

       -> Tehnicheskie_svoystva char(60), Tsena integer); INSERT INTO goods_1

       -> SELECT *

       -> FROM goods;  

Таким образом мы создали таблицу Goods_1, с которой в дальнейшем и будем работать


4.4. Выборка данных из таблицы

Оператор выборки записей имеет формат  вида:

SELECT [ALL | DISTINCT]

<список данных>

FROM <список таблиц>

[WHERE<условие выборки>]

[GROUP BY<имя столбца> [, < имя столбца >]…]

[HAVING<условие поиска>]

[ORDER BY<спецификация> [, < спецификация >]…]

Это наиболее важный оператор из всех операторов SQL. Функциональные возможности его огромны. Рассмотрим основные из них.

Оператор SELECT позволяет производить выборку и вычисления над данными из одной или нескольких таблиц. Результатом выполнения оператора является ответная таблица, которая может иметь (ALL), или не иметь (DISTINCT) повторяющиеся строки. По умолчанию в ответную таблицу включаются все строки, в том числе и повторяющиеся. В отборе данных участвуют записи одной или нескольких таблиц, перечисленных в списке операнда FROM..

Список данных может содержать имена столбцов, участвующих в запросе, а также выражения над столбцами. В простейшем случае в выражениях можно записывать имена столбцов, знаки арифметических операций (+, — ,*,/), константы и круглые скобки. Если в списке данных записано выражение, то наряду с выборкой данных выполняются вычисления, результаты которого попадают в новый (создаваемый) столбец ответной таблицы.

При использовании в списках данных имен столбцов нескольких таблиц для указания принадлежности столбца некоторой таблице применяют конструкцию вида: <имя таблицы>.<имя столбца>.

Операнд WHERE задает условия, которым должны удовлетворять записи в результирующей таблице. Выражение <условие выборки> является логическим. Его элементами могут быть имена столбцов, операции сравнения, арифметические операции, логические связки (И, ИЛИ, НЕТ), скобки, специальные функции LIKE, IN  и  т. д.

Запрос 5. Выборка данных из таблицы по условию, наложенному, на столбец «Tehnicheskie_svoystva»

Пусть требуется найти те товары в таблице Goods, для которых в столбце «Tehnicheskie_svoystva» присутствует словосочетание «802.11b» и цена на товар лежит в диапазоне от 300 до 700

Создадим еще две таблицы и заполним их поля:

Таблица Podtip:

mysql> create table Podtip (Tip_tovara char(50), Podtip_tovara char(50));

mysql> insert into podtip values

   -> ("Wirelles LAN", "Access Point"),

   -> ("Wirelles LAN", "Bluetooth"),

   -> ("Internet Router", "Broadband Router"),

   -> ("Wirelles LAN", "Card"),

   -> ("Internet Router", "Enterprise Serial Router"),

   -> ("VoIP", "Gateway"),

   -> ("Wirelles LAN", "Outdoor Bridge"),

   -> ("VoIP", "Phone"),

   -> ("Wirelles LAN", "Router"),

   -> ("Internet Router", "VPN Router");

Таблица Tip:

mysql> create table Tip (Tip_tovara char(50));

mysql> insert into tip values

   -> ("Internet Router"), ("VoIP"), ("Wirelles LAN");

Теперь выполним запрос на выборку:

 

Рис.3 Результат выполнения запроса 5


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

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

 

 

Рис.4 Результат выполнения запроса 6

4.5. ИЗМЕНЕНИЕ ДАННЫХ В ТАБЛИЦЕ

Оператор изменения записей имеет формат вида:

UPDATE <имя таблицы>

SET <имя столбца> = {<выражение>}

[, SET <имя столбца> = {<выражение>}…]

[WHERE < условие >]

Выполнение оператора UPDATE состоит в изменении значений в определенных операндом SET столбцах таблицы для тех записей, которые удовлетворяют условию, заданному операндом WHERE.

Запрос 7. Увеличение цены цены в 1.5 раза

Пусть требуется увеличить цену всех товаров “Card” в 1.5 раза

Рис.5 Результат выполнения запроса 7


Запрос 8. Удаление столбца из таблицы

Путь из данной таблицы требуется удалить столбец

 

Рис.5 Результат выполнения запроса 7

Запрос 9. Добавление нового столбца в таблицу

Путь в данную таблицу требуется добавить новый столбец

 

Рис.6 Результат выполнения запроса 8


Запрос 10. Добавление записей в отдельный столбец

Требуется в существующий пустой столбец “Postavshik”добавить соответствующие записи

 

Рис.7 Результат выполнения запроса 9

4.6. Удаление ДАННЫХ ИЗ ТАБЛИЦЫ

Оператор удаления записей имеет формат вида:

DELETE FROM <имя таблицы>

[WHERE <условие>]

Результатом выполнения оператора DELETE является удаление из указанной таблицы строк, которые удовлетворяют условию, определенному операндом WHERE. Если необязательный операнд WHERE опущен, т. е. условие отбора удаляемых записей отсутствует, удалению подлежат все записи таблицы.

Запрос 11. Удаление записей из таблицы по заданному условию

Удалить из Goods_1 записи о тех устройствах, для которых Podtip_tovaraAccess Point и цена которых меньше 260.

Рис.8 Результат выполнения запроса 10

Запрос 12. Удаление всех записей из таблицы

Удалить из Goods все записи

Запрос 13. Удаление таблицы

Удалить таблицу Goods_1

 


4.7. Защита данных в СУБД MySQL

Для обеспечения защиты данных от несанкционированного доступа, в СУБД MySQL используются команды GRANT и REVOKE. Они позволяют системным администраторам создавать пользователей MySQL, а также предоставлять права пользователям или лишать их прав на четырех уровнях привилегий:

- Глобальный уровень 

Глобальные привилегии применяются ко всем базам данных на указанном сервере. Эти привилегии хранятся в таблице mysql.user.

- Уровень базы данных 

Привилегии базы данных применяются ко всем таблицам указанной базы данных. Эти привилегии хранятся в таблицах mysql.db и mysql.host.

- Уровень таблицы 

Привилегии таблицы применяются ко всем столбцам указанной таблицы. Эти привилегии хранятся в таблице mysql.tables_priv.

- Уровень столбца 

Привилегии столбца применяются к отдельным столбцам указанной таблицы. Эти привилегии хранятся в таблице mysql.columns_priv.

Если привилегии предоставляются пользователю, которого не существует, то этот пользователь создается.

GRANT и REVOKE имеют следующий синтаксис:

GRANT priv_type [(column_list)] [, priv_type [(column_list)] ...]

   ON {tbl_name | * | *.* | db_name.*}

   TO user_name [IDENTIFIED BY [PASSWORD] 'password']

       [, user_name [IDENTIFIED BY 'password'] ...]

   [REQUIRE

       [{SSL| X509}]

       [CIPHER cipher [AND]]

       [ISSUER issuer [AND]]

       [SUBJECT subject]]

   [WITH [GRANT OPTION | MAX_QUERIES_PER_HOUR # |

                         MAX_UPDATES_PER_HOUR # |

                         MAX_CONNECTIONS_PER_HOUR #]]

REVOKE priv_type [(column_list)] [, priv_type [(column_list)] ...]

   ON {tbl_name | * | *.* | db_name.*}

   FROM user_name [, user_name ...]

В таблице приведен список возможных значений параметра priv_type для операторов GRANT и REVOKE:

ALL [PRIVILEGES]

Задает все простые привилегии, кроме WITH GRANT OPTION

ALTER

Разрешает использование ALTER TABLE

CREATE

Разрешает использование CREATE TABLE

CREATE TEMPORARY TABLES

Разрешает использование CREATE TEMPORARY TABLE

DELETE

Разрешает использование DELETE

DROP

Разрешает использование DROP TABLE.

EXECUTE

Разрешает пользователю запускать хранимые процедуры (для MySQL 5.0)

FILE

Разрешает использование SELECT ... INTO OUTFILE и LOAD DATA INFILE.

INDEX

Разрешает использование CREATE INDEX and DROP INDEX

INSERT

Разрешает использование INSERT

LOCK TABLES

Разрешает использование LOCK TABLES на таблицах, для которых есть привилегия SELECT.

PROCESS

Разрешает использование SHOW FULL PROCESSLIST

REFERENCES

Зарезервировано для использования в будущем

RELOAD

Разрешает использование FLUSH

REPLICATION CLIENT

Предоставляет пользователю право запрашивать местонахождение головного и подчиненных серверов.

REPLICATION SLAVE

Необходимо для подчиненных серверов при репликации (для чтения информации из бинарных журналов головного сервера).

SELECT

Разрешает использование SELECT

SHOW DATABASES

SHOW DATABASES выводит все базы данных.

SHUTDOWN

Разрешает использование mysqladmin shutdown

SUPER

Позволяет установить одно соединение (один раз), даже если достигнуто значение max_connections, и запускать команды CHANGE MASTER, KILL thread, mysqladmin debug, PURGE MASTER LOGS и SET GLOBAL

UPDATE

Разрешает использование UPDATE

USAGE

Синоним для "без привилегий".

Чтобы лишить пользователя привилегий, предоставленных командой GRANT, можно воспользоваться значением priv_type в GRANT OPTION:

mysql> REVOKE GRANT OPTION ON ... FROM ...;

Для таблицы можно указать только следующие значения priv_type: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT, INDEX и ALTER. 

Для столбца можно указать только следующие значения priv_type (при использовании оператора column_list): SELECT, INSERT и UPDATE.

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

Новых пользователей можно добавлять, используя команду GRANT:

Рассотрим несколько примеров:

c:\mysql\bin\mysql.exe user=root mysql

a) mysql> GRANT ALL PRIVILEGES ON *.* TO fedya@localhost

        -> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

Fedya  - Полноценный суперпользователь - он может подсоединяться к серверу откуда угодно, но должен использовать для этого пароль some_pass.

б) mysql> GRANT CREATE, INSERT, UPDATE, DELETE, DROP, SELECT

                   -> ON*.* TO vasya@lacalhost IDENTIFIED BY 'some_pass2' WITH

                   -> GRANT OPTION;

Vasya может использовать команды CREATE, INSERT, UPDATE, DELETE, DROP, SELECT. Иными словами он может все необходимое для работы с базой данных. Он также может подсоединяться к серверу откуда угодно, но должен использовать для этого пароль some_pass2.

в) mysql> GRANT SELECT ON*.* TO vova@localhost IDENTIFIED BY

                   -> 'some_pass3' WITH GRANT OPTION;

Vova может подсоединяться к серверу откуда угодно, но должен использовать для этого пароль some_pass3. И его привилегии ограничены только использованием команды SELECT.

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

mysql> GRANT SELECT, UPDATE (code, Tehnicheskie_svoystva, Tsena)

        -> ON laba3.goods TO user_name@localhost

        -> IDENTIFIED BY 'password' WITH GRANT OPTION;

В данном примере пользователь user_name получает доступ к столбцам code, Tehnicheskie_svoystva и Tsena таблицы goods из базы данных laba3.

Этот пример демонстрирует гибкость системы разграничения привилегий доступа к данным СУБД MySQL.

При разграничении привилегий следует помнить следующее:

- Нельзя предоставить другому пользователю привилегию, которой нет у вас самого. Привилегия GRANT позволяет предоставлять только те привилегии, которыми вы обладаете;

- Если при создании нового пользователя не указать оператор IDENTIFIED BY, будет создан пользователь без пароля. Это ненадежно с точки зрения безопасности.

- Не следует назначать привилегии ALTER обычным пользователям. Это дает пользователю возможность разрушить систему привилегий путем переименования таблиц! 

5. Список используемой литературы:

  •  Справочное руководство по MySQL, http://codebase.h11.ru/
  •  «Understanding SQL», Martin Gruber, http://www.sql.ru/


 

А также другие работы, которые могут Вас заинтересовать

12619. Практичне вивчення системи Windows Server 2008 2.07 MB
  Лабораторна работа3: Практичне вивчення системи Windows Server 2008 Метою лабораторної роботи є практичне освоєння операційної системи Windows Server 2008 – її графічної оболонки входу і виходу структури робочого столу основних дій і настройок при роботі в системі.. Зміст Апа...
12620. Практичне вивчення системи Windows 7 2.61 MB
  Лабораторна работа4: Практичне вивчення системи Windows 7 Метою лабораторної роботи є практичне освоєння операційної системи Windows 7 – її графічної оболонки входу і виходу структури робочого столу основних дій і настройок при роботі в системі.. Зміст Апаратура і пр...
12621. Практичне вивчення системи Windows Mobile 776 KB
  Лабораторна работа5: Практичне вивчення системи Windows Mobile Метою лабораторної роботи є практичне освоєння операційної системи для мобільних пристроїв Windows Mobile – її графічної оболонки входу і виходу структури робочого столу основних дій і настройок при роботі в системі. ...
12622. Практичне вивчення Windows Azure 1.63 MB
  Лабораторна работа6: Практичне вивчення Windows Azure Метою лабораторної роботи є практичне освоєння Windows Azure– новітньої платформи Microsoft для хмарних обчислень cloud computing.. Робота в Windows Azure вимагає наявності академічного доступу до Windows Azure або платної реєстрації в ній. Альтернат...
12623. Практичне вивчення Windows Research Kernel 310 KB
  Лабораторна работа7: Практичне вивчення Windows Research Kernel Метою лабораторної роботи є практичне освоєння Windows Research Kernel WRK – початкових кодів дослідницького ядра Windows призначених для більш глибокого вивчення архітектури Windows і досліджень в області операційних систем. Пакет W...
12624. Знайомство з 1С: Бухгалтерія 397.91 KB
  Звіт з лабораторноі роботи №1 Знайомство з 1С: Бухгалтерія з предмета САОЕІ Мета: Налаштувати параметри програми скласти проводки записати їх в журнал операцій і сформувати оборотносальдову відомість по матеріалам з допомогою програми 1С Бухгалтерія 7.7. Хі...
12625. Робота з інформаційно-довідковою системою «Незалежні виробники товарів і послуг» 711 KB
  Звіт з лабораторної роботи №2 на тему: Робота з інформаційнодовідковою системою Незалежні виробники товарів і послуг по предмету: CАОЕІ Мета: вивчити призначення і можливості інформаційнодовідкової системи Незалежні виробники товарів і послуг навчи...
12626. Робота з інформаційно-довідковою системою «Контакти» 642.81 KB
  Звіт з лабораторноі роботи № 3 Робота з інформаційнодовідковою системою Контакти з предмета САОЕІ Мета роботи: вивчити призначення і можливості інформаційнодовідкової системи КОНТАКТИ. Хід виконання роботи: Вибрала власника програми для вводу влав
12627. Знайомство з програмою Фінансист 767 KB
  Лабораторна робота 4. Тема: Знайомство з програмою Фінансист. Мета : Проведення фінансового аналізу стану та результатів діяльності підприємства використовуючи стандартну фінансову звітність: Баланс та Звіт про фінансові результати ПСБО 2 і 3 відповідно а також дод