Самый лучший способ установить права доступа для пользователя в таблицах разре­шения 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 ta­ble 'employees' mysql> SELECT * FROM logs;
Как обращаться с командами grand и revoke
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 ta­ble '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 ta­ble '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;