MySQL, límite por usuario

En la mayoría de las ocasiones, cuando hablamos de limitar las consultas o conexiones a MySQL se suele hablar de la variable (global) max_user_connections, pero no de variables que controlen las consultas a nivel individual. Sin embargo, en la documentación de MySQL, hay un pequeño apartado que habla del tipo de restricciones o límites que se le pueden establecer a un usuario.
Éstas se aplican de forma individual a cada uno de los usuarios y son,
  • Número de consultas usuario/hora
  • Número de updates usuario/hora
  • Número de accesos usuario/hora
  • Número de conexiones simultaneas por usuario
Todos estos límites son establecidos cuando se crea un usuario y están escritos en la tabla mysql.user y se aplican o alteran con GRANT. Un valor 0, indica que no hay límites.
Un ejemplo de podría ser,
mysql> CREATE USER 'test'@'localhost' IDENTIFIED BY 'passwd';
mysql> GRANT ALL ON test.* TO 'test'@'localhost'
    -> WITH MAX_QUERIES_PER_HOUR 100
    ->      MAX_UPDATES_PER_HOUR 30
    ->      MAX_CONNECTIONS_PER_HOUR 200
    ->      MAX_USER_CONNECTIONS 10;
donde se establecen unos límites de 100 consultas/hora, 30 updates/hora, 200 conexiones/hora y un máximo de 10 conexiones de usuario simultáneas.
Si ahora nos interesa alterar alguno de los valores prefijados, bien para subirlos o bien para bajarlos, simplemente,
mysql> GRANT USAGE ON *.* TO 'prueba'@'localhost'
    -> WITH MAX_QUERIES_PER_HOUR 50;
De la misma forma, estableciendo un límite de 0, se sacan los límites establecidos.
mysql> GRANT USAGE ON *.* TO 'prueba'@'localhost'
    -> WITH MAX_QUERIES_PER_HOUR 0;
Y para sacar todos los límites, simplemente,
mysql> FLUSH USER_RESOURCES

Nota: Las consultas que se obtengan de caché, no contarán como consultas para el límite.


No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios