Самый лучший способ установить права доступа для пользователя в таблицах разрешения MySQL -через команды GRAND и REVOKE, , т.к. они были разработаны специально для этого.
Вот как выглядит синтаксис этих команд:
GRANT привилегия (имя-поля, имя - поля, ...), привилегия (имя - поля, имя-поля, ...), ... ON имя-базы-данных.имя-таблицы TO пользователь@домен IDENTIFIED BY пароль, пользователь@домен IDENTIFIED BY пароль, ... REVOKE привилегия (имя-поля, имя-поля, ...), привилегия (имя-поля, имя-поля, ...), ... ON имя-базы-данных.имя-таблицы FROM пользова-тель@домен, пользователь@домен, ...
Рассмотрим несколько примеров. Первый пример устанавливает привилегии SELECT, INSERT и DELETE в таблице dbLlogs для пользователя logger, подключаясь с паролем timber с узлаlocalhost.
Листинг 14.22.
mysql> GRANT SELECT, INSERT, UPDATE ON dbLlogs TO logger@localhost IDENTIFIED BY 'timber';
Теперь проверим, что происходит, когда этот пользователь заходит на сервер и пробует запросить какие-нибудь данные.
Листинг 14.23.
[userohost] $ mysql -h localhost -u logeer -p
Enter password: ******
Welcome to the MySQL monitor. Commands and with ; or g. Your MySQL connection id is 7 to server version: 4.0.14 Type 'help; ' or 'h' for help. Type 'c' to clear the buffer mysql> USE mysql;
ERROR 1044: Access denied for user: 'loggerolocalhost' to database 'mysql'
mysql> USE dbl; Database changed
mysql> SELECT * FROM employees;
ERROR 1142: select command denied to user: 'loggerolocalhost' for table 'employees' mysql> SELECT * FROM logs;
3 rows in set (0.00 sec)
mysql> INSERT INTO logs VALUES (37, 'Sendmail restart, 102 messages in queue", 'sendmail');
Query OK, 1 row affectad (0.00 sec) mysql> DELETE FROM logs WHERE id = 37;
ERROR 1142: delete command denied to user: 'loggerolocalhost' for table 'logs'
Таким образом, пользователь имеет право работать только с командами, заданными командой GRANT. При каждом вводе пользователем определенной команды, MySQL проверяет соответствующую этому пользователю запись в таблице разрешений, и только после этого команда может быть выполнена.
Команда REVOKE является обратной команде GRANT, отменяя права, выделенные пользователю. Рассмотрим следующий пример, ограничивающий права пользователя logger на выполнение команд INSERT и UPDATE в таблице db1.logs.
Листинг 14.24.
mysql> REVOKE INSERT, UPDATE ON dbl.logs to logger@localhost;
Это изменение вступает в действие немедленно. В следующем листинге показано, что происходит, если пользователь logger попробует добавить еще одну запись в таблицу (эта операция была разрешена только для него).
Листинг 14.25.
mysql> INSERT INTO logs VALUES (38, 'System powerdown sygnal received', 'smpd');
ERROR 1142: insert command denied to user: 'loggerolocalhost' for table 'logs'
Когда речь идет о базах данных и таблицах, в команде GRANT может быть задан групповой символ *. Следующий запрос дает право пользователю admin на выполнение с узла medusa команд RELOAD, PROCESS, SELECT, DELETE и INSERT.
Листинг 14.26.
mysql> GRANT RELOAD, PROCESS, SELECT, DELETE, INSERT, UPDATE ON *.* TO admin@medusa IDENTIFIED BY 'secret';
Следующий пример присваивает привилегию SELECT по таблице employ-ees.compensation только пользователю supervisor.
Листинг 14.27.
mysql> GRANT SELECT employees.compensation TO supervisor;
Затем привилегии SELECT и UPDATE по отдельным столбцам таблицы grades присваиваются пользователям harry и john.
Листинг 14.28.
mysql> GRANT SELECT (id, name, subj, grade) ON dbl.grades TO harry; mysql> GRANT SELECT (id, name, subj, grade), UPDATE (name, grade) dbl.grades TO john;
В следующем примере аннулируются привилегии CREATE и DROP пользователя tim в базе данных 2 0 03a.
Листинг 14.29.
mysql> REVOKE CREATE, DROP ON db2003a.* FROM tim@funhouse.com; Различие между таблицами и базами данных
Все перечисленные в команде GRANT таблицы и поля должны уже существовать. Но это правило не действует, если речь идет о привилегиях, касающихся баз данных. MySQL позволяет задавать привилегии относительно несуществующих баз данных. Помните, что это различие зачастую становится причиной ошибок.
Приведенный ниже пример показывает, как отменить право на использование функции DELETE в таблице menu.
Листинг 14.30.
mysql> REVOKE DELETE ON www.menu FROM webmaster@localhost;
Следующая команда отменяет права пользователя sarah на модификацию полей name и address таблицы customer.
Листинг 14.31.
mysql> REVOKE UPDATE (name, address) ON sales.customers FROM sarah@work.domain.net;
Кроме того, MySQL обеспечивает уровень привилегий ALL, (т.е. "все привилегии"), что помогает оптимизировать команды GRANT и REVOKE. Это хорошо видно из следующего примера, в котором назначаются все привилегии пользователю www в базе данных web, который подключается с любого узла домена melonfire.com.
Листинг 14.32.
mysql> GRANT ALL ON web.* TO www@'%.melonfore.com' IDENTIFIED BY 'abracadabra';
Таким же образом используется команда REVOKE для отмены всех привилегий пользователя.
Листинг 14.33.
mysql> REVOKE ALL ON web.* FROM www@'%.melonfire.com';
В MySQL также предусмотрен уровень привилегий USAGE, который используется при создании пользователя без назначения привилегий. Ниже приведено два примера.
Листинг 14.34.
mysql> GRANT USAGE ON content.* TO joe@localhost; mysql> GRANT USAGE ON *.* TO test@some.domain.com;
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
Все о MySQL. Как обращаться с командами grand и revoke
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Взаимодействие между таблицами разрешений | Все о MySQL. Привилегия GRANT |