MySQL позволяет пользователям с привилегией GRANT, предоставить такие же при­вилегии другим пользователям. Для этого в команде GRANT предусмотрена опция WITH GRANT OPTION. Когда эта опция добавлена в команду GRANT, пользователь, к которому она применяется, получает такие же привилегии, что и остальные пользователи.
Листинг 14.35.
mysql> GRANT SELECT, DELETE, INSERT, UPDATE, CREATE, DROP, INDEX ON inventory.* TO david@localhost WITH GRANT OPTION;

Использование групповых символов
При использовании в командах GRANT и REVOKE имени узла, базы данных, группо­вых символов типа % и _, MySQL требует выделять данные имена кавычками. Для того чтобы создать анонимного пользователя, вместо имени пользователя используйте пустую строку ' '.

Все вручную
Когда вызывается команда GRANT для определенного пользователя, для него авто­матически создается запись в таблице user, если это новый пользователь. Команда REVOKE не удаляет запись из таблицы user. Следовательно, несмотря на то, что поль­зователь может быть автоматически добавлен с помощью команды GRANT, автомати­чески удалить его с помощью команды REVOKE нельзя, тут уж придется потрудиться вручную, и сделать это можно только с помощью команды DELETE.
Пользователь davidolocalhost теперь будет иметь привилегию GRANT и может на­значить такие же права другим пользователям.
Привилегия GRANT
Пользователь davidolocalhost уже может зайти на сервер MySQL и "поделиться" своими правами.
Привилегия GRANT
Привилегия GRANT теперь может быть использована и в обратном направлении, для чего следует использовать параметр GRANT OPTION со стандартной командой REVOKE.
Листинг 14.38.
mysql> REVOKE GRANT OPTION ON inventory.* FROM david@localhost;
Пользователь davidolocalhost больше не может предоставлять привилегии другим пользователям, что подтверждается таблицей user и результатом работы команды GRANT.
Привилегия GRANT
При назначении привилегии GRANT для пользователя, нужно быть очень аккуратным. Поскольку пользователь с разными уровнями доступа может объединить их, получив та­ким образом высший уровень доступа, который существенно отличается от первона­чальных.
Ограничение использования ресурсов
В новой версии MySQL 4.x, появилась возможность ограничения использования кон­кретных пользователей ресурсов на сервере. Это стало возможным после добавления в таблицу user трех новых полей: max_questions, max_updates и max_connections, которые могут использоваться для ограничения выполнения запросов, обновлений запи­сей или таблиц, что соответственно ограничивает количество подключений пользователей к серверу. Эти три поля будто отображают три опции в команде GRANT.
Первая из них, предложение MAX_QUERIES_PER_HOUR, ограничивает количество выполняемых запросов за час. 
Листинг 14.40.
mysql> GRANT SELECT ON *.* TO sarah WITH MAX_QUERIES_PER_HOUR 5;
Предложение MAX_QUERIES_PER_HOUR контролирует сумму всех запросов за час, но запросы SELECT, INSERT, DELETE не подпадают под этот контроль. При желании еще можно ограничить количество команд UPDATE в час, что можно сделать с помощью MAX_UPDATES_PER_HOUR.
Листинг 14.41.
mysql> GRANT SELECT ON *.* TO sarah WITH MAX_UPDATES_PER_HOURS 5;
А вот количество подключений контролируется уже совсем другим предложением: MAX_CONNECTION_PER_HOUR:
Листинг 14.42.
mysql> GRANT SELECT ON *.* sarah WITH MAX_CONNECTIONS_PER_HOUR 3;
Кроме того, все вышеупомянутые предложения могут применяться вместе.
Листинг 14.43.
mysql> GRANT SELECT, INSERT, UPDATE ON *.* TO supervisor WITH MAX_QUERIES_PER_HOUR 50 MAX_UPDATES_PER_HOUR 10 MAX_CONNECTIONS_PER_HOUR 4;
Запомните, что данные предложения не могут быть назначены только для базы данных или для таблиц, они включаются и выключаются глобально с помощью конструкции ON *.* команды GRANT. В следующем примере показано, как отреагирует MySQL, если уровень был превышен.
Листинг 14.44.
mysql> INSERT INTO customers (id, name) VALUES (2892, 'Lola J');
ERROR 1226: User 'sarah' has exceeded the 'max_questions' resource (current value: 5)
На сервере существует внутренний счетчик для всех трех ограничений. Счетчики могут быть перезагружены в любое время с помощью команды FLUSH USER_RESOURCES.
Листинг 14.45.
mysql> FLUSH USER_RESOURCES;
Query OK, 0 rows affected (0.00 sec) На заметку
Для выполнения команды FLUSH необходима привилегия RELOAD.