Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
для студентов РУБД / Лаб раб 4 курс.doc
Скачиваний:
60
Добавлен:
21.03.2016
Размер:
635.39 Кб
Скачать

Пример: 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 Проверять только таблицы, изменившиеся с момента последней проверки. и.т.д.

Задание.

  1. Проверить все таблицы на повреждение.

  2. Обновить таблицы.

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

    1. Через графическую среду выполнить BAKUPиRESTORE(следить за тем, чтобы таблицы были типаMyISAM).

    2. С помощью утилиты mysqldump создать копию таблиц.

  4. Восстановить таблицы (2 таблицы)

  5. В отчете представить все протоколы выполнения и сценарии дампов.

Лабораторная работа №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, а также предоставлять права пользователям или лишать их прав на четырех уровнях привилегий: