• Привилегии, областью действия которых является отдельная база данных, хранятся в таблице db (база данных). Первичный ключ в этой таблице образуют столбцы Host (хост), Db (база данных) и User (пользователь). Таким образом, каждая строка таблицы определяет привилегии одного пользователя по отношению к одной базе данных. Как и в таблице user, каждой привилегии соответствует отдельный столбец, возможными значениями которого являются \'Y\' и \'N\'.
...
Примечание
При проверке доступа пользователей к базе данных используется также таблица 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).

Рис. 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).