MySQL 5.0. Библиотека программиста
Шрифт:
Примечание
При проверке доступа пользователей к базе данных используется также таблица host. Однако команды GRANT и REVOKE не затрагивают эту таблицу, и обычно она остается пустой.
• Привилегии, относящиеся к отдельным таблицам, хранятся в таблице tables_ priv. Первичным ключом в этой таблице служат столбцы Host (Хост), Db (База данных), User (Пользователь) и Table_name (Имя таблицы). Таким образом, каждая строка таблицы tables_priv определяет привилегии доступа конкретного пользователя к конкретной таблице. Типы привилегий, которыми обладает пользователь, перечислены в столбце Table_priv (Привилегии доступа к таблице), имеющем тип данных SET. Кроме того, в таблице tables_priv имеется столбец Column_priv (Привилегии доступа к столбцу) с типом данных SET, значение которого указывает, что у пользователя
• Привилегии для отдельных столбцов хранятся в таблице 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).
Чтобы увидеть остальные привилегии, выполните следующую настройку.
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) с информацией о привилегиях доступа к отдельным таблицам и столбцам.
Для управления глобальными привилегиями пользователя откройте вкладку Global Privileges. Имеющиеся у пользователя привилегии перечислены в колонке Assigned Privileges (Назначенные привилегии). Отсутствующие у пользователя привилегии перечислены в колонке Available Privileges (Доступные привилегии). Для присвоения и отмены привилегий предназначены кнопки
и
После того как набор привилегий сформирован, нажмите кнопку Apply Changes (Сохранить изменения).
Аналогичным образом выполняется настройка привилегий доступа к отдельным базам данных на вкладке Schema Privileges.
Вкладка 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).
Затем щелкните на названии столбца price и снова переместите привилегию COLUMN_UPDATE в колонку Assigned Privileges (Назначенные привилегии) (рис. 5.8). Наконец, сохраните созданные привилегии, нажав кнопку Apply Changes (Сохранить изменения).
Итак, вы научились управлять привилегиями пользователей MySQL с помощью графической утилиты MySQL Administrator. На этом мы завершаем обзор системы привилегий доступа MySQL и переходим к следующей теме – резервному копированию и восстановлению базы данных.
5.3. Резервирование базы данных
Резервное копирование баз данных необходимо, чтобы в случае сбоев операционной системы, файловой системы или разрушения физических носителей информации вы могли восстановить данные из резервной копии и с минимальными потерями продолжить работу. В MySQL предусматривается множество способов резервного копирования данных, так что вы можете выбрать наиболее подходящий для вас.
Рекомендуется использовать стратегию резервного копирования, которая сочетает два взаимодополняющих метода:
• периодическое полное резервное копирование базы данных;
• ведение двоичных журналов, в которых регистрируются все изменения данных в промежутках между резервными копированиями.
Слишком частое полное резервирование неэффективно, поскольку занимает много времени, а значительная часть данных в базе не успевает измениться. Поэтому наряду с полным резервированием используется промежуточное, которое заключается в копировании двоичных журналов на резервный носитель. Таким образом, даже в случае полного разрушения диска, на котором располагается база данных, вы сможете восстановить не только информацию, сохраненную при полном копировании, но и последующие изменения вплоть до момента последнего промежуточного копирования.
В зависимости от назначения и интенсивности эксплуатации вашей базы данных вы можете подобрать оптимальную частоту полного и промежуточного резервирования. Например, полное резервное копирование может выполняться еженедельно, а промежуточное – ежедневно.
Вначале вы узнаете, как настроить запись информации в двоичные журналы, затем узнаете об организации полного копирования и, наконец, познакомитесь с процедурой восстановления данных в случае сбоя.
Двоичные журналы
Файл двоичного журнала накапливает историю изменений в базе данных за некоторый промежуток времени и позволяет в случае необходимости воспроизвести эти изменения.