В MySQL существует возможность ограничить для конкретного аккаунта следующие ресурсы:
- MAX_QUERIES_PER_HOUR – количество запросов, которое может выполнить данный пользователь в течение часа;
- MAX_UPDATES_PER_HOUR – количество апдейтов, которое может быть выполнено в течение часа;
- MAX_CONNECTIONS_PER_HOUR – сколько раз пользователь может коннектиться к серверу в течение часа;
- MAX_USER_CONNECTIONS – количество одновременно разрешенных коннектов.
Необходимо отметить, что ограничение количества одновременных коннектов под одним аккауном также может быть установлено через глобальную переменную MAX_USER_CONNECTIONS в значение отличное от 0. При этом никак не ограничивается, что именно пользователь будет делать, когда подконнектится.
Для того, чтобы установить эти ограничения используется команда GRANT с ключом WITH и именем того ресурса, который мы хотим ограничить. Значения по умолчанию – 0 (без ограничений).
GRANT ALL ON USERS.* TO ‘joe’@’localhost’
WITH MAX_QUERIES_PER_HOUR 20 MAX_UPDATES_PER_HOUR 10
MAX_CONNECTIONS_PER_HOUR 5 MAX_USER_CONNECTIONS 2;
Например, можно установить лимиты с помощью вышеуказанной команды.
Для того, чтобы “сбросить” установленные ранее ограничения в значение по умолчанию (“без ограничений”), необходимо установить их в 0.
GRANT USAGE ON *.* to ‘jane’@’localhost’
WITH MAX_CONNECTIONS_PER_HOUR 0;
Обратите внимание, что установка MAX_USER_CONNECTIONS в нулевое значение, еще не означает снятие ограничений. В этом случае будет работать системная переменная MAX_USER_CONNECTIONS, если она была установлена.