Автор работы: Пользователь скрыл имя, 28 Марта 2012 в 18:45, творческая работа
Программное обеспечение MySQL (TM) представляет собой очень быстрый многопоточный, многопользовательский надежный SQL-сервер баз данных (SQL - язык структурированных запросов). Сервер MySQL предназначен как для критических по задачам производственных систем с большой нагрузкой, так и для встраивания в программное обеспечение массового распространения.
Описание MySQL (TM)
Версия шаблона | 1.1 |
Филиал | Ульяновский |
Вид работы | Творческая работа |
Название дисциплины | Принципы построения WEB-серверов |
Тема | Система безопасности MySQL |
Фамилия студента | Бормотин |
Имя студента | Владимир |
Отчество студента | Владимирович |
№ контракта | 05308070601001 |
Описание MySQL…………………………………………………………...
Приложения ………………………………………………………………………..7
Программное обеспечение MySQL (TM) представляет собой очень быстрый многопоточный, многопользовательский надежный SQL-сервер баз данных (SQL - язык структурированных запросов). Сервер MySQL предназначен как для критических по задачам производственных систем с большой нагрузкой, так и для встраивания в программное обеспечение массового распространения.
СУБД MySQL:
- быстрая – благодаря многопоточной архитектуре;
- гибкая – поддерживает большое подмножество языка запросов SQL;
- мультиплатформенная;
- бесплатная.
Система безопасности MySQL
При первоначальной установке MySQL создается база данных под названием «mysql». В этой базе есть пять таблиц:
user - содержит данные по безопасности, относящиеся к серверу в целом.
host - содержит права доступа к серверу для удаленных компьютеров.
db, tables_priv, columns_priv - управляют доступом к отдельным базам данных, таблицам и колонкам.
Таблица user
Смысл различных прав доступа в таблице user (Приложение А) разъясняется ниже:
– Create_priv - Возможность выполнять команды CREATE или создавать базы данных.
– Drop_priv - Возможность выполнять команды DROP для удаления баз данных.
– Reload_priv - Возможность обновлять информацию о доступе с помощью mysqladmin reload.
– Shutdown_priv - Возможность останавливать сервер через mysqladmin shutdown.
– Process_priv - Возможность управлять процессами сервера.
– File_priv - Возможность читать и записывать файлы с помощью команд типа SELECT INTO OUTFILE и LOAD DATA INFILE.
– Grant_priv - Возможность давать привилегии другим пользователям.
– Index_priv - Возможность создавать и уничтожать индексы.
– Alter_priv - Возможность выполнять команду ALTER TABLE.
В MySQL есть специальная функция password(), зашифровывающая пароль.
Имена пользователей MySQL обычно не связаны с именами пользователей операционной системы. В большинстве клиентских приложений MySQL можно с помощью параметра -u подключиться к MySQL, с любым именем.
Примеры:
- INSERT INTO user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv)VALUES ('%', 'bob', password('mypass'), 'Y', 'Y', 'Y', 'Y')
– INSERT INTO user (Host, User, Password, Select_priv)VALUES ('athens.imaginary.com', 'jane', '', 'Y')
– INSERT INTO user(Host, User, Password)VALUES ('%', 'nobody', '')
– INSERT INTO user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv)VALUES ('athens.imaginary.com', 'nobody', password('thispass'), 'Y', 'Y', 'Y', 'Y')
Прежде чем осуществлять поиск в таблице user, MySQL сортирует данные следующим образом:
1. Сначала ищется соответствие для узлов, не содержащих масок «%», при этом пустое поле Host трактуется как «%».
2. Для одного и того же узла сначала проверяется соответствие имен, не содержащих масок. Пустое поле User трактуется как содержащее «%».
3. Первое найденное соответствие считается окончательным.
Права доступа к отдельным базам данных хранятся в таблице db (Приложение Б). Таблица управляет правами пользователей в отношении определенных баз данных. Права, присвоенные пользователю в таблице user, перекрывают права, присвоенные тому же пользователю в таблице db. Например, если пользователю в таблице user разрешают доступ типа INSERT, это право действует в отношении всех баз данных, вне зависимости оттого, что указано в таблице db.
Наиболее эффективно создание в таблице user записей для всех пользователей, в которых не даны никакие права. В этом случае пользователь может лишь подключиться к серверу, не выполняя никаких действий. Исключение делается только для пользователя, назначенного администратором сервера. Все остальные должны получить права доступа через таблицу db. Каждый пользователь должен присутствовать в таблице user, иначе он не сможет подключаться к базам данных.
Пустое поле Host вынуждает MySQL найти запись, соответствующую имени узла пользователя, в таблице host. Если такой записи не найдено, MySQL отказывает в доступе. Если соответствие найдено, MySQL определяет права как пересечение прав, определяемых таблицами host и db. Иными словами, в обеих записях разрешение должно иметь значение «Y», иначе в доступе отказывается.
Таблица host позволяет задать основные разрешения на межкомпьютерном уровне. При проверке прав доступа MySQL ищет в таблице db соответствие имени пользователя и его машине. Если он находит запись, соответствующую имени пользователя, поле host которой пусто, MySQL обращается к таблице host и использует пересечение обоих прав для определения окончательного права доступа.
Таблицы tables_priv и columns_priv.
Уточняют данные, имеющиеся в таблице db. Право на всякую операцию сначала проверяется по таблице db, затем по таблице tables_priv , затем по таблице columns_priv. Операция разрешается, если одна из них дает разрешение.
С помощью этих таблиц можно сузить область действия разрешений до уровня таблиц и колонок. Управлять этими таблицами можно через команды SQL GRANT и REVOKE.
Последовательность контроля доступа.
Необходимо подключиться к серверу, прежде чем пытаться что-либо сделать.
Сначала MySQL проверяет, есть ли в таблице user запись, соответствующая имени пользователя и машины, с которой он подключается. Если соответствие не найдено, в доступе отказывается.
В случае, когда соответствующая запись найдена и имеет непустое поле Password , необходимо ввести правильный пароль. Неправильный пароль приводит к отклонению запроса на подключение.
Если соединение установлено, MySQL переходит к этапу верификации запроса - запросы сопоставляются с правами. Эти права MySQL проверяет по таблицам user, db, host, tables_pnv и columns_priv.
Как только найдено соответствие в таблице user с положительным разрешением, команда немедленно выполняется. В противном случае MySQL продолжает поиск в следующих таблицах в указанном порядке:
db > tables_priv > columns_priv
Если таблица db содержит разрешение, дальнейшая проверка прекращается и выполняется команда. Если нет, то MySQL ищет соответствие в таблице tables_priv.
Если это команда SELECT, объединяющая две таблицы, то пользователь должен иметь разрешения для обеих этих таблиц.
Если хотя бы одна из записей отказывает в доступе или отсутствует, MySQL точно таким же способом проверяет все колонки в таблице columns_priv.
Изменение прав доступа. MySQL загружает таблицы доступа при запуске сервера. Преимуществом такого подхода по сравнению с динамическим обращением к таблицам является скорость.
Отрицательная сторона состоит в том, что изменения, производимые в таблицах доступа MySQL, начинают действовать после выполнения команды mysqladmin reload.
Если таблицы изменяются с помощью SQL-команд GRANT или REVOKE, явно перегружать таблицы не требуется.
А | |
Б |
7