пользователях, зарегистрированных в системе.
Просмотр учетных записей
Для получения информации о зарегистрированных пользователях выполним запрос к таблице user (Пользователь) системной базы данных mysql, например
Первые три столбца таблицы user нам уже знакомы – это Host, User и Password. Далее следуют
В следующем подразделе вы узнаете, как оперировать учетными записями пользователей в наглядном интерфейсе графической утилиты MySQL Administrator.
Управление учетными записями в MySQL Administrator
В отличие от сервера MySQL, утилита MySQL Administrator рассматривает пользователей с одинаковыми именами как одного и того же пользователя. Например, учетные записи с идентификаторами 'anna'@'localhost' и 'anna'@ % представляют для MySQL Administrator одного и того же пользователя anna и им нельзя присвоить разные пароли. Несмотря на это, пользователь может иметь разные привилегии доступа при подключении с разных компьютеров, тем самым совместимость с системой привилегий доступа MySQL в целом сохраняется. Далее вы увидите, как этот принцип работает на практике.
Запустите программу MySQL Administrator (Пуск → Все программы → MySQL → MySQL
Administrator) и в окне соединения с сервером (см. рис. 1.26 в подразделе «Запуск и остановка сервера MySQL с помощью MySQL Administrator») введите параметры соединения. На экране возникнет главное окно MySQL Administrator. В левой области этого окна щелкните пункт User Administration (Управление пользователями).
В левом нижнем углу окна появится область User Accounts (Учетные записи), в которой представлен список зарегистрированных пользователей (рис. 5.3).
Рис. 5.3. Просмотр учетных записейЭлементы первого уровня в этом списке соответствуют учетным записям вида '<Имя пользователя>'@'%'. Вложенные элементы соответствуют записям с тем же именем пользователя, но другим хостом. Дважды щелкнув кнопкой мыши на имени пользователя, вы можете открыть или скрыть вложенные элементы.
Например, если для пользователя anna имеются учетные записи с идентификаторами 'anna'@'localhost' и 'anna'@'%', то после щелчка кнопкой мыши на корневом элементе anna вы увидите в правой области окна информацию для учетной записи (см. рис. 5.3), а после щелчка на вложенном элементе localhost – информацию для записи 'anna'@'localhost'. На вкладке User Information (Информация о пользователе) в обоих случаях будут отображены одинаковые сведения, но на остальных вкладках, в частности на вкладке Schema Privileges (Привилегии доступа к базам данных), сведения могут отличаться. Если же для пользователя anna учетная запись 'anna'@'%' не существует, то после щелчка на корневом элементе anna вкладки в правой области станут неактивными.
Помимо просмотра информации о пользователях и хостах, с которых пользователям разрешено подключаться, вы можете выполнить в MySQL Administrator следующие операции:
• Создание нового пользователя.
В правой области главного окна нажмите кнопку Add new user (Добавить нового пользователя). На вкладке User Information (Информация о пользователе) введите имя и пароль нового пользователя. Нажмите кнопку Apply Changes (Сохранить изменения).
Для нового пользователя автоматически создается элемент первого уровня, то есть учетная запись вида '<Имя пользователя>'@'%'. В дальнейшем вы можете добавить для пользователя другие учетные записи, а эту удалить.
• Добавление новой учетной записи для пользователя.
В области User Accounts (Учетные записи) щелкните правой кнопкой мыши на имени пользователя и выберите в контекстном меню пункт Add host from which the user can connect (Добавить хост, с которого будет разрешено подключаться пользователю). В окне Add Host (Добавление хоста) введите нужное значение (о том, как задать хост или маску хоста для учетной записи, вы узнали из подраздела «Общие сведения об учетных записях»). Нажмите сначала кнопку OK, а затем в главном окне MySQL Administrator кнопку Apply Changes (Сохранить изменения).
• Удаление учетной записи для пользователя.Внимание !
Если для пользователя создана единственная учетная запись, то ее удаление приведет к удалению пользователя.
В области User Accounts (Учетные записи) щелкните правой кнопкой мыши на элементе, который соответствует удаляемой учетной записи, и выберите в контекстном меню пункт Remove host from which the user can connect (Удалить хост, с которого разрешено подключаться пользователю). В правой области главного окна нажмите кнопку Apply Changes (Сохранить изменения).
• Установка пароля пользователя.
В области User Accounts (Учетные записи) щелкните на имени пользователя. В правой области окна на вкладке User Information (Информация о пользователе) введите новый пароль в поля Password (Пароль) и Confirm Password (Подтверждение пароля). Нажмите кнопку Apply Changes (Сохранить изменения). Новый пароль будет установлен для всех учетных записей с данным именем пользователя.
• Удаление пользователя.
В области User Accounts (Учетные записи) щелкните правой кнопкой мыши на имени пользователя и выберите в контекстном меню пункт Delete user (Удалить пользователя). На экране возникнет диалоговая панель, в которой нужно подтвердить удаление, нажав кнопку Yes (Да).
Итак, вы научились выполнять все основные операции с учетными записями пользователей MySQL. Далее вы узнаете, как назначить учетным записям те или иные привилегии доступа.
5.2. Система привилегий доступа
Данный раздел посвящается второму этапу контроля доступа пользователей – проверке привилегий доступа при выполнении каждой операции в базе данных.
Вы узнаете, какие привилегии предусмотрены в MySQL и как предоставить их пользователям.
Общие сведения о системе привилегий доступа
Создание привилегии доступа в MySQL подразумевает определение следующих параметров:
• идентификатор учетной записи пользователя, которому предоставляется привилегия;
• тип привилегии, то есть тип операций, которые будут разрешены пользователю;
• область действия привилегии.
В MySQL используются следующие основные типы привилегий:
• ALL [PRIVILEGES] – предоставляет все привилегии, кроме GRANT OPTION, для указанной области действия;
• ALTER – разрешает выполнение команд ALTER DATABASE и ALTER TABLE;
• CREATE – разрешает выполнение команд CREATE DATABASE и CREATE TABLE;
• CREATE USER – разрешает выполнение команд CREATE USER, DROP USER, RENAME USER;
• DELETE – разрешает выполнение команды DELETE;
• DROP – разрешает выполнение команд DROP DATABASE и DROP TABLE;
• FILE – разрешает чтение и создание файлов на сервере с помощью команд SELECT… INTO OUTFILEи LOAD DATA INFILE;
• INDEX – разрешает выполнение команд CREATE INDEX и DROP INDEX;
• INSERT – разрешает выполнение команды INSERT;
• SELECT – разрешает выполнение команды SELECT;
• LOCK TABLES – разрешает выполнение команды LOCK TABLES при наличии привилегии SELECT для блокируемых таблиц;
• SHOW DATABASES – разрешает отображение всех баз данных при выполнении команды SHOW DATABASES (если эта привилегия отсутствует, то в списке будут отображены только те базы данных, по отношению к которым у пользователя есть какая-либо привилегия);
• RELOAD – разрешает выполнение команды FLUSH;
• SUPER – привилегия администратора сервера; в частности, разрешает выполнение команды SET GLOBAL;
• UPDATE – разрешает выполнение команды UPDATE;
• GRANT OPTION – разрешает назначать и отменять привилегии другим пользователям (эта возможность распространяется только на те привилегии, которые есть у самого пользователя для указанной области действия).
Примечание
Здесь приведены только те типы привилегий, которые требуются для выполнения операций, описанных в данной книге. Полный список типов привилегий вы можете найти в документации компании-разработчика на веб-странице http://dev.mysql.com/doc/refman/5.0/en/privileges- provided.html.
Областью действия привилегии могут быть:
• все базы данных (такие привилегии называются глобальными);
• отдельная база данных;
• таблица;
• столбец таблицы.
Каждый тип привилегии имеет свои допустимые области действия. Так, привилегии FILE, SHOW DATABASES, RELOAD, SUPER и CREATE USER могут быть только глобальными. Привилегия LOCK TABLES может применяться глобально или к отдельным базам данных, но не к отдельным таблицам. К отдельным столбцам таблицы применимы только привилегии