Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Установка пользователей: команда GRANT



Команды GRANT и REVOKE используются для того, чтобы представить и отнимать права у пользователей MySQL на четырех уровнях привилегий. Вот они

• Глобальный                                                                   

• Базы данных                                                                  

• Таблицы

• Столбца

С помощью команды GRANT можно заводить пользователей и предоставлять привилегии. Общий вид команды GRANT выглядит следующим образом:

 

GRANT privileges [columns] ON item

TO user_name [IDENTIFIED BY 'password' ]

[WITH GRANT OPTION]

 

Первый раздел, privileges (привилегии), должен заполняться разделенным запятой списком привилегий, четко определенных в MySQL. Список будет рассматриваться далее.

Заполнитель columns (столбцы) необязателен. Им можно воспользоваться чтобы назначать привилегии по конкретным столбцам. Можно определить имя одного столбца, либо разделенный запятыми список имен столбцов.

Заполнитель item (элемент) может быть базой данных или таблицей, к которой применяются новые привилегии.

В MySQL существуют три основных типа привилегий: привилегии, которые можно давать обычным пользователям; привилегии, которые нужны только администраторам, и множество специальных привилегий. Любой пользователь может получить все привилегии, тем не менее, администраторы редко делятся с кем-либо своими правами, и причина тому — принцип наименьших привилегий. Пользователям необходимы привилегии только для баз данных и таблиц, с которыми они работают. Доступ к базе данных 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;

Q 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.mysqlxom/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 <0бласть действия> ТО идентификатор пользователя> [WITH GRANT OPTION];

В качестве области действия вы можете указать одно из следующих значений:

□ * . * — привилегия будет действовать глобально;

□ <Имя базы данных>. * — привилегия будет действовать для указанной базы данных;

□ * — привилегия будет действовать для базы данных, которая в момент выпол­нения команды GRANT являлась текущей;

□ <Имя базы данных>. <Имя таблицы> или <Имя таблицы> — привилегия будет действовать для указанной таблицы (если имя базы данных не указано, подразумевается текущая база данных). Если требуется создать привилегию не для всей таблицы, а только для отдельных столбцов, необходимо перечислить эти столбцы в скобках перед ключевым словом ON.

Рассмотрим несколько примеров.

□ GRANT CREATE ON *.* ТО 'anna'@'localhost';

Команда предоставляет пользователю anna'@'localhost привилегию на создание баз данных и таблиц в любой базе данных.

□ GRANT DROP ON SalesDept.* TO 'anna'@'localhost';

Команда предоставляет пользователю anna'@'localhost привилегию на удаление таблиц в базе данных SalesDept (Отдел продаж), а также на удаление самой базы данных SalesDept.

□ GRANT SELECT ON SalesDept.Products TO 'anna'@'localhost';

Команда предоставляет пользователю anna'@'localhost привилегию на получе­ние данных из таблицы Products (Товары) базы данных SalesDept (Отдел продаж).

□ GRANT UPDATE (price) ON SalesDept.Products TO 'anna'@'localhost';
Команда предоставляет пользователю anna'@'localhost привилегию на изменение
данных в столбце price (цена) таблицы Products (Товары).

При назначении привилегий необходимо иметь в виду следующие особенности.

□ Если учетная запись с указанным идентификатором не существует, команда
GRANT может создать такую запись. Отключить автоматическое создание
учетной записи позволяет ключевое слово NO_AUTO_CREATE_USER в значе­
нии переменной sql__mode (напомню, что настройку режима взаимодействия
с сервером MySQL мы обсуждали в подразделе «Вставка отдельных строк»
главы 2).

 


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 238; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.021 с.)
Главная | Случайная страница | Обратная связь