Начиная с MySQL версии 4.0.2 можно ограничивать определенные ресурсы, выделяемые пользователям.
До этой версии единственным возможным методом ограничения использования
ресурсов сервера MySQL была установка переменной запуска
max_user_connections
в значение, отличное от нуля. Но этот метод действует
только на глобальном уровне и не позволяет управлять отдельными
пользователями. Он может представлять определенный интерес только для
провайдеров услуг Internet.
На уровне отдельного пользователя теперь введено управление следующими тремя ресурсами:
Количество всех запросов в час: все команды, которые может запускать пользователь.
Количество всех обновлений в час: любая команда, которая изменяет таблицу или базу данных.
Количество соединений, сделанных за час: новые соединения, открытые за час.
Пользователь в упомянутом выше контексте представляет собой отдельную
запись в таблице user, которая уникальным образом идентифицируется своими
столбцами user
и host
.
По умолчанию все пользователи не ограничены в использовании указанных выше
ресурсов только в случае, только если эти ограничения не наложены на них.
Данные ограничения могут быть наложены только при помощи глобальной
команды GRANT (*.*)
с использованием следующего синтаксиса:
GRANT ... WITH MAX_QUERIES_PER_HOUR N1 MAX_UPDATES_PER_HOUR N2 MAX_CONNECTIONS_PER_HOUR N3;
Можно указать любое сочетание приведенных выше ресурсов. N1, N2 и N3 являются целыми числами, представляющими собой значения количеств запросов/обновлений/соединений в час.
Если пользователь в течение часа достигает предела любого из вышеуказанных значений, его соединение будет прервано с выдачей соответствующего сообщения об ошибке.
Текущие значения для определенного пользователя могут быть сброшены
(установлены в нуль), если воспользоваться оператором GRANT
с любым из
приведенных выше пунктов, включая оператор GRANT
с текущими значениями.
Кроме того, текущие значения для всех пользователей сбрасываются, если
производится перезагрузка привилегий (на сервере или при использовании
команды mysqladmin reload
) или если выполняется команда FLUSH USER_RESOURCES
.
Эта функция включается сразу после того, как на пользователя будут
наложены ограничения при помощи команды GRANT
.
Необходимым условием для включения данной функции является наличие в
таблице user
базы данных mysql
дополнительного столбца, как это определено
в скриптах создания таблиц mysql_install_db
и mysql_install_db.sh
в
подкаталоге scripts
.