• 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 может применяться глобально или к отдельным базам данных, но не к отдельным таблицам. К отдельным столбцам таблицы применимы только привилегии SELECT, INSERT и UPDATE.
Чтобы получить разрешение на выполнение операции с каким-либо объектом базы данных, пользователю достаточно иметь привилегию соответствующего типа для какой-либо области действия, содержащей этот объект. Например, пользователь сможет выполнить запрос данных из столбца description (наименование) таблицы Products (Товары) базы данных SalesDept (Отдел продаж), если у него есть хотя бы одна из следующих привилегий:
• глобальная привилегия SELECT;
• привилегия SELECT для базы данных SalesDept;
• привилегия SELECT для таблицы Products;
• привилегия SELECT для столбца description.
Для выполнения некоторых операций может потребоваться несколько типов привилегий. Например, команда
UPDATE SalesDept.Products SET price=\'548.00\' WHERE id=5;
доступна пользователю, если у него одновременно есть привилегия SELECT для таблицы Products (или для базы данных SalesDept, или глобальная) и привилегия UPDATE для столбца price (или для таблицы Products, или для базы данных SalesDept, или глобальная).
Теперь, получив общее представление о привилегиях доступа в MySQL, вы можете переходить к назначению привилегий пользователям.
Предоставление привилегий
Для предоставления привилегий пользователям используется команда
GRANT <���Тип привилегии>
[(<���Список столбцов>)] ON <���Область действия>
TO <���Идентификатор пользователя>
[WITH GRANT OPTION];
В качестве области действия вы можете указать одно из следующих значений:
• *.* – привилегия будет действовать глобально;
• <���Имя базы данных>.* – привилегия будет действовать для указанной базы данных;
• * – привилегия будет действовать для базы данных, которая в момент выполнения команды GRANT являлась текущей;
• <���Имя базы данных>.<���Имя таблицы> или <���Имя таблицы> – привилегия будет действовать для указанной таблицы (если имя базы данных не указано, подразумевается текущая база данных). Если требуется создать привилегию не для всей таблицы, а только для отдельных столбцов, необходимо перечислить эти столбцы в скобках перед ключевым словом ON.
Рассмотрим несколько примеров.
• GRANT CREATE ON *.* TO \'anna\'@\'localhost\
Команда предоставляет пользователю anna\'@\'localhost привилегию на создание баз данных и таблиц в любой базе данных.
• GRANT DROP ON SalesDept.* TO \'anna\'@\'localhost\
Команда предоставляет пользователю anna\'@\'localhost привилегию на удаление таблиц в базе данных SalesDept (Отдел продаж), а также на удаление самой базы данных SalesDept.
Читать дальше
Конец ознакомительного отрывка
Купить книгу