Виктор Гольцман - MySQL 5.0. Библиотека программиста
• Привилегии для отдельных столбцов хранятся в таблице columns_priv. Первичный ключ этой таблицы состоит из столбцов, идентифицирующих пользователя (Host и User), и столбцов, идентифицирующих столбец (Db, Table_name и Column_name). Типы привилегий, которыми обладает пользователь по отношению к столбцу, перечислены в столбце Column_priv (Привилегии доступа к столбцу) с типом данных SET.
Таблицы user, db, tables_priv и columns_priv вы можете использовать для получения информации о пользователях, обладающих привилегиями доступа к интересующему вас объекту базы данных. Если же требуется, наоборот, узнать, к каким объектам имеет доступ конкретный пользователь, выполните команду
SHOW GRANTS [FOR Идентификатор пользователя>];
Команда SHOW GRANTS выводит сведения о привилегиях пользователя в виде набора команд GRANT, с помощью которых можно сформировать текущий набор привилегий пользователя. Если идентификатор пользователя не задан, вы увидите свои привилегии.
Итак, вы научились добавлять, удалять и просматривать привилегии с помощью специальных команд. Далее вы узнаете, как выполнять те же самые операции в наглядном интерфейсе графической утилиты MySQL Administrator.
Управление привилегиями в MySQL Administrator
В подразделе «Управление учетными записями в MySQL Administrator» вы узнали, каким образом в утилите MySQL Administrator представлена информация о зарегистрированных пользователях. По умолчанию для каждого пользователя отображается вкладка Schema Privileges (Привилегии доступа к базам данных), содержащая сведения о привилегиях, областью действия которых являются отдельные базы данных (рис. 5.4).
Рис. 5.4. Вкладка Schema PrivilegesЧтобы увидеть остальные привилегии, выполните следующую настройку.
1. В главном окне MySQL Administrator откройте меню Tools (Сервис) и выберите пункт Options (Параметры).
2. В появившемся окне Options (Параметры) в левой области щелкните на пункте Administrator (Администратор).
3. В правой области в группе полей User Administration (Управление пользователями) установите флажок Show Global Privileges (Отображать глобальные привилегии) и флажок Show Schema Object Privileges (Отображать привилегии для объектов базы данных).
4. Нажмите кнопку Apply (Сохранить), а затем кнопку Close (Закрыть).
После этого в главном окне MySQL Administrator появятся вкладка Global Privileges (рис. 5.5) с информацией о глобальных привилегиях пользователя и вкладка Schema Object Privileges (рис. 5.6) с информацией о привилегиях доступа к отдельным таблицам и столбцам.
Рис. 5.5. Вкладка Global PrivilegesРис. 5.6. Вкладка Schema Object Privileges
Для управления глобальными привилегиями пользователя откройте вкладку Global Privileges. Имеющиеся у пользователя привилегии перечислены в колонке Assigned Privileges (Назначенные привилегии). Отсутствующие у пользователя привилегии перечислены в колонке Available Privileges (Доступные привилегии). Для присвоения и отмены привилегий предназначены кнопки
и
После того как набор привилегий сформирован, нажмите кнопку Apply Changes (Сохранить изменения).
Аналогичным образом выполняется настройка привилегий доступа к отдельным базам данных на вкладке Schema Privileges. Чтобы просмотреть и отредактировать список привилегий пользователя для какой-либо базы данных, щелкните на названии этой базы в колонке Schemata (Базы данных).
Вкладка Schema Object Privileges отличается от вкладки Schema Privileges только тем, что колонка Schemata содержит иерархическое дерево объектов базы данных. Значок
слева от названия объекта позволяет увидеть список подчиненных объектов, то есть таблиц базы данных или столбцов таблицы. Чтобы просмотреть и отредактировать список привилегий пользователя для какого-либо объекта, найдите этот объект в дереве и щелкните на его названии.
В предыдущем подразделе говорилось, что столбец Column_priv (Привилегии доступа к столбцу) имеется как в таблице columns_priv, так и в таблице tables_priv системной базы данных mysql. В MySQL Administrator привилегии доступа к столбцам (названия таких привилегий начинаются со слова COLUMN) также присутствуют в списках доступных привилегий и для самого столбца, и для содержащей его таблицы. Чтобы присвоить пользователю привилегию доступа к столбцу, ее нужно добавить в список назначенных привилегий дважды: на уровне столбца и на уровне таблицы.
Пусть, например, необходимо предоставить пользователю привилегию на изменение данных в столбце price (цена) в таблице Products (Товары) (аналогично команде GRANT UPDATE (price) ON SalesDept.Products TO 'anna'@'localhost). Для этого щелкните на названии таблицы Products и с помощью кнопки
переместите привилегию COLUMN UPDATE в колонку Assigned Privileges (Назначенные привилегии) (рис. 5.7).
Рис. 5.7. Предоставление привилегии доступа к столбцу. Шаг 1Затем щелкните на названии столбца price и снова переместите привилегию COLUMN_UPDATE в колонку Assigned Privileges (Назначенные привилегии) (рис. 5.8). Наконец, сохраните созданные привилегии, нажав кнопку Apply Changes (Сохранить изменения).
Рис. 5.8. Предоставление привилегии доступа к столбцу. Шаг 2Итак, вы научились управлять привилегиями пользователей MySQL с помощью графической утилиты MySQL Administrator. На этом мы завершаем обзор системы привилегий доступа MySQL и переходим к следующей теме – резервному копированию и восстановлению базы данных.
5.3. Резервирование базы данных
Резервное копирование баз данных необходимо, чтобы в случае сбоев операционной системы, файловой системы или разрушения физических носителей информации вы могли восстановить данные из резервной копии и с минимальными потерями продолжить работу. В MySQL предусматривается множество способов резервного копирования данных, так что вы можете выбрать наиболее подходящий для вас.
Рекомендуется использовать стратегию резервного копирования, которая сочетает два взаимодополняющих метода:
• периодическое полное резервное копирование базы данных;
• ведение двоичных журналов, в которых регистрируются все изменения данных в промежутках между резервными копированиями.
Слишком частое полное резервирование неэффективно, поскольку занимает много времени, а значительная часть данных в базе не успевает измениться. Поэтому наряду с полным резервированием используется промежуточное, которое заключается в копировании двоичных журналов на резервный носитель. Таким образом, даже в случае полного разрушения диска, на котором располагается база данных, вы сможете восстановить не только информацию, сохраненную при полном копировании, но и последующие изменения вплоть до момента последнего промежуточного копирования.
В зависимости от назначения и интенсивности эксплуатации вашей базы данных вы можете подобрать оптимальную частоту полного и промежуточного резервирования. Например, полное резервное копирование может выполняться еженедельно, а промежуточное – ежедневно.
Вначале вы узнаете, как настроить запись информации в двоичные журналы, затем узнаете об организации полного копирования и, наконец, познакомитесь с процедурой восстановления данных в случае сбоя.
Двоичные журналы
Файл двоичного журнала накапливает историю изменений в базе данных за некоторый промежуток времени и позволяет в случае необходимости воспроизвести эти изменения.
Чтобы включить ведение двоичных журналов, запустим сервер MySQL с параметром –log-bin. Это можно сделать одним из следующих способов.
• Если вы запускаете сервер вручную из командной строки (об этом шла речь в подразделе «Запуск и остановка сервера MySQL из командной строки» главы 1), укажите параметр –log-bin в команде запуска сервера:
mysqld-nt –log-bin
• Если сервер MySQL сконфигурирован как сервис Windows и запускается автоматически, или с помощью панели управления, или с помощью MySQL Administrator (см. подразделы «Запуск и остановка сервера MySQL с помощью MySQL Administrator» и «Запуск и остановка сервера MySQL с панели управления» главы 1), откройте конфигурационный файл my.ini, находящийся в папке, где установлена программа MySQL, и добавьте параметр log-bin в раздел [mysqld] (рис. 5.9). Сохраните файл my.ini. Ведение журналов начнется после перезапуска сервера.
Рис. 5.9. Настройка ведения двоичных журналов• Вместо того чтобы редактировать файл my.ini вручную, вы можете запустить MySQL Administrator, в левой области главного окна щелкнуть пункт Startup Variables (Параметры запуска), открыть вкладку Log files (Журналы) (рис. 5.10) и установить флажок Binary Logfile (Двоичный журнал), а затем нажать кнопку Apply Changes (Сохранить изменения). Чтобы сервер MySQL начал вести журналы, его необходимо перезапустить.
Рис. 5.10. Настройка ведения двоичных журналов в MySQL AdministratorВ процессе работы сервера в папке data корневой папки MySQL будут создаваться двоичные журналы – файлы с именами вида <Имя xocTa>-bin.xxxxxx, где xxxxxx – порядковый номер журнала. Очередной файл журнала создается в следующих случаях:
• при достижении предельного размера предыдущего файла;