Limitar recursos a los usuarios MYSQL

En ocasiones nos encontramos con el problema de uso escesivo de conexiones en nuestros servidor mysql, la primera idea es aumentar el numero maximo de estas. Sin embargo cuando el problema es un bug o un DoS esto no nos conduce a ninguan parte ya que por muchas ocnexiones que habilitemos siempre serán consumidas en su totalidad.

Para poder delimitar el origen del mal, lo mejor es limitar los recursos que le permitimos utilizar a cada uno de los usuarios de nuestra base de datos, generalmente csda usuario se corresponde con una aplicación.

mysql> GRANT ALL ON customer.* TO 'francis'@'localhost'
->     IDENTIFIED BY 'frank'
->     WITH MAX_QUERIES_PER_HOUR 20
->          MAX_UPDATES_PER_HOUR 10
->          MAX_CONNECTIONS_PER_HOUR 5
->          MAX_USER_CONNECTIONS 2;

Creo que una vez se ve el comando no requiere mas comentarios.

El contador actual por hora de uso de recursos puede reiniciarse
globalmente para todas las cuentas, o individualmente para una
cuenta dada:

  • Para reiniciar los contadores actuales a cero para todas las
    cuentas, ejecute el comando FLUSH
    USER_RESOURCES
    . Los contadores también pueden
    reiniciarse recargando las tablas de permisos (por ejemplo,k
    con un comando FLUSH PRIVILEGES o
    mysqladmin reload).
  • Los contadores para una cuenta individual pueden ponerse a
    cero cambiando cualquiera de sus límites. Para hacerlo, use
    GRANT USAGE como se ha descrito
    anteriormente y especifique un valor límtite igual al valor
    que tiene la cuenta en ese momento.

Los reinicios de contadores no afectan el límite
MAX_USER_CONNECTIONS .

Todos los contadores empiezan a cero cuando el servidor arranca;
los contadores no se guardan al reiniciar.

El manual completo lo tenemos en: http://dev.mysql.com/doc/refman/5.0/es/user-resources.html

This entry was posted in mysql. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *