
- •1. Подготовка и допуск к работе
- •2. Содержание отчета
- •Лабораторная работа №15
- •Лабораторная работа № 16
- •Пример: backup table vines,query,client,distributor,delivery to c:/mysql_bak';
- •Удалены 3 таблицы. Теперь восстановим их.
- •Пример: optimizetablEmytable
- •Лабораторная работа №17
- •Значение usage можно задавать, если необходимо создать пользователя без привилегий.
- •Примеры:
- •Доступ к MySql из сети
- •С помощью утилиты Mysqlshow выполните команду на просмотр структуры и состав таблиц базы Mysql. Приведите в отчете её схему.
- •Лабораторная работа №18
- •Тема: Файлы журналов MySql Репликация в MySql
- •Цель: Формирование умений и знаний для работы в среде субд Mysql.
- •Журнал ошибок
- •Общий журнал запросов
- •Журнал обновлений (update)
- •Бинарный журнал обновлений
- •Журнал медленных запросов
- •Обслуживание файлов журналов
- •Репликация в MySql
- •Настройка репликации
- •Лабораторная работа № 19-20
- •Сохраненные процедуры и функции
- •Сохраненные подпрограммы и таблицы предоставления привилегий
- •Синтаксис хранимых процедур
- •Синтаксис alter procedure и alter function
- •Синтаксис drop procedure и drop function
- •Синтаксис команды call
- •Синтаксис составного оператора begin ... End
- •Синтаксис declare
- •Переменные в сохраненных подпрограммах Локальные переменные declare
- •Команда set
- •Команда select ... Into
- •Условия и драйверы
- •Declare условий
- •Declare драйвера
- •Курсоры
- •Объявление курсоров
- •Инструкция case
- •Инструкция loop
- •Инструкция leave
- •Инструкция iterate
- •5.2.10.6. Инструкция repeat
- •Инструкция while
- •Задание
- •Приложение а
- •Демонстрируется использование mysql в качестве несложного калькулятора:
- •Проверка таблицы при помощи команды describe:
- •Выборка всех данных
- •Выборка определенных строк. Выборка с условием
- •Операторы and и or можно использовать совместно.
- •Предположим, нужно узнать, в каком возрасте животные давали приплод:
- •В этом запросе мы указываем псевдонимы имен таблицы, для обращения к столбцам и определения, к какой из таблиц относится каждая ссылка на столбец.
- •Сортировку можно проводить по нескольким столбцам сразу.
- •Отсортировать результаты по возрасту также можно при помощи выражения orderby:
- •Максимальное значение столбца
Пример: optimizetablEmytable
Утилита myisamchkпроверяет/ремонтирует таблицы типа MyISAM (.MYI и .MYD), ее можно использовать для получения информации о таблицах рабочей базы данных, для их проверки и исправления или же оптимизации.
myisamchk [options] tbl_name
Если опции не указаны, myisamchk просто проверяет таблицу.
tbl_name - это таблица базы данных, которую нужно проверить/исправить.
myisamchk *.MYI
Можно даже проверить все таблицы во всех базах данных, если задать шаблон вместе с путем к каталогу данных MySQL:
myisamchk /path/to/datadir/*/*.MYI
Проверочные опции для myisamchk
-c или --check Проверить таблицы на ошибки.
-e или --extend-check Проверить таблицу очень тщательно
-F или --fast Проверять только таблицы, которые не были корректно закрыты.
-C или --check-only-changed Проверять только таблицы, изменившиеся с момента последней проверки. и.т.д.
Задание.
Проверить все таблицы на повреждение.
Обновить таблицы.
Создать резервные копии всех таблиц, используя все команды и утилиты
Через графическую среду выполнить BAKUPиRESTORE(следить за тем, чтобы таблицы были типаMyISAM).
С помощью утилиты mysqldump создать копию таблиц.
Восстановить таблицы (2 таблицы)
В отчете представить все протоколы выполнения и сценарии дампов.
Лабораторная работа №17
Тема: Безопасность и система привилегий доступа MySQL
Цель: Получить практические навыки по созданию пользователей.
Сведения из теории.
Общие проблемы безопасности и система привилегий доступа MySQL
В контексте БД термин безопасности означает защиту данных от несакционированного раскрытия, изменения и уничтожения. МySQL использует собственный сервер баз данных для обеспечения безопасности. Эти права базируются на именах серверов и/или пользователей и предоставляться для баз данных.
При первоначальной установке MySQL создается база данных под названием «mysql». В этой базе есть пять таблиц: db, host, user, tab-les_priv, и columns_priv. MySQL использует эти таблицы для определения того, кому что позволено делать.
Таблица userсодержит данные по безопасности, относящиеся к серверу в целом.
Таблица hostсодержит права доступа к серверу для удаленных компьютеров.
db, tables_priv и со-lumns_priv управляют доступом к отдельным базам данных, таблицам и колонкам.
Управление доступом в MySQL осуществляется в два этапа:
Этап 1: сервер проверяет, имеется ли разрешение на подсоединение (верификация подсоединения). Личность задается двумя порциями информации:
хостом, с которого идет подсоединение
именем пользователя MySQL
Сервер устанавливает соединение только в том случае, если находит в таблице user запись, в которой имя хоста и имя пользователя совпадают с введенными, и указывается правильный пароль.
Значения в полях контекста таблицы user могут задаваться следующим образом:
В поле Hostможет указываться имя хоста, либо его IP-адрес, либо 'localhost' для обозначения локального хоста. В поле Host разрешается использовать шаблонные символы ‘%’ и ‘_’. Значение '%' в поле Host означает любое имя хоста. Пустое значение в поле Host означает, что к этой привилегии должна быть добавлена запись в таблице host, совпадающая с заданным именем хоста. Неразрешены имена хостов, начинающиеся с цифр и точки.
В поле Userзапрещено использовать шаблонные символы, но пустое значение разрешено, и оно соответствует любому имени.
Поле Passwordможет быть пустым. Это не означает, что в данном случае подходит любой пароль. Если поле пароля пусто, пользователь должен быть подсоединен без указания какого либо пароля. Непустые значения в поле Password представляют собой зашифрованные пароли.
Этап 2: После установления соединения сервер приступает к выполнению второго этапа. Для каждого поступающего запроса сервер проверяет, имеется ли достаточно привилегий для его выполнения, основываясь при этом на типе операции, которую собираются выполнить. В действие вступают поля привилегий в таблицах привилегий. Информация о привилегиях может находиться в любой из таблиц привилегий -user, db, host, tables_priv или columns_priv.
Для пользователей и их привилегий в таблице user следует установить значение 'N' и предоставлять им привилегии только на уровне баз данных, используя для этого таблицы db и host.
Таблицы db и host предоставляют привилегии на уровне базы данных.
Таблицы tables_priv и columns_priv предоставляют привилегии соответственно на уровне таблиц и столбцов. В обеих таблицах в полях Db, Table_name и Column_name запрещено использовать шаблонные символы или пустое значение.
В таблицах user, db и host все поля привилегий имеют объявленный тип ENUM('N','Y'), т.е. возможно одно из двух значений - 'N' и 'Y', а устанавливаемым по умолчанию является 'N'.
В таблицах tables_priv and columns_priv поля привилегий объявляются как SET:
Имя таблицы |
Имя поля |
Допустимые элементы набора |
tables_priv |
Table_priv |
'Select', 'Insert', 'Update', 'Delete', 'Create', 'Drop', 'Grant', 'References', 'Index', 'Alter' |
tables_priv |
Column_priv |
'Select', 'Insert', 'Update', 'References' |
columns_priv |
Column_priv |
'Select', 'Insert', 'Update', 'References' |
Соединение с сервером MySQL
Обычно для получения доступа к серверу MySQL необходимо сообщить клиентской программе параметры подсоединения: указать хост, имя пользователя и пароль.
mysql [-h host_name] [-u user_name] [-pyour_pass]
Альтернативной формой опций -h, -u, и -p являются --host=host_name, --user=user_name и --password=your_pass. Заметим, что между –p или --password= и следующим за ними паролем пробела нет.
mysqlaccess[options] [host]userdatabase
Показывает и изменяет права доступа к серверу MySQL. Все действия выполняются над копией действующей таблицы привилегий, пока не будет вызвана команда mysqlaccess -commit .
Синтаксис команд 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
NONE |
[{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 #]]
Отзывает права у пользователя. Значения privilege, table и user те же, что в операторе GRANT. У вас должно быть право GRANT для выполнения этого оператора.
REVOKE priv_type [(column_list)] [, priv_type [(column_list)] ...]
ON {tbl_name | * | *.* | db_name.*}
FROM user_name [, user_name ...]
Команды GRANT и REVOKE позволяют системным администраторам создавать пользователей MySQL, а также предоставлять права пользователям или лишать их прав на четырех уровнях привилегий: