Por temas del trabajo llevo unos días revisando documentación de MySQL y en la parte referente a los permisos de usuario descubrí que hay muchos más límites que se le pueden establecer a un usuario al conectarse al motor de base de datos. Hablando ya de cosas concretas, estamos hablando de límites para:
- Número de consultas a realizar por hora
- Número de actualizaciones a realizar por hora
- Número de conexiones por hora
- Número de conexiones simultáneas por usuario.
Cómo aplicar los nuevos límites
Estos límites son establecidos para cada usuario, y por lo tanto deben ser indicados para el usuario cuando se crea (comando GRANT), como se ve a continuación.
mysql> CREATE USER 'test'@'localhost' IDENTIFIED BY 'passwd'; mysql> GRANT ALL ON *.* TO 'test'@'localhost' -> WITH MAX_QUERIES_PER_HOUR 20 -> MAX_UPDATES_PER_HOUR 10 -> MAX_CONNECTIONS_PER_HOUR 20 -> MAX_USER_CONNECTIONS 1;
Hay que tener en cuenta que estos límites son para query's que no estén en caché, es decir, todas las que implican acceso a recursos. Por lo tanto, si se emplea la misma query se puede realizar más de las N veces establecidas como límite.
Una vez alcanzado el límite establecido, se nos advertirá de ello y no se podrá hacer nada hasta que pase una hora.
mysql> SELECT * FROM users; ERROR 1226 (42000): User 'test' has exceeded the 'max_questions' resource
Cómo modificar los límites
Lógicamente, también se pueden modificar dichos límites, por ejemplo,
mysql> GRANT USAGE ON *.* TO 'test'@'localhost' -> WITH MAX_QUERIES_PER_HOUR 50;
Cómo borrar los límites
Y para borrarlos sólo tenemos que establecer a 0 su valor.
mysql> GRANT USAGE ON *.* TO 'test'@'localhost' -> WITH MAX_QUERIES_PER_HOUR 0;
No hay comentarios :
Publicar un comentario