怎么限制用户使用的最大查询数 MAX_QUERIES_PER_HOUR设置
MAX_QUERIES_PER_HOUR 是 MySQL 原生账户级 SQL 执行频次限流机制统计用户任意连续 60 分钟内所有语句总数超限报错 ERROR 1226建户用 CREATE USER WITH改户用 ALTER USER WITH设为 0 表示不限失效主因是连接池复用、系统隐式查询计入、未刷权限或拼写错误。怎么用 MAX_QUERIES_PER_HOUR 限制用户每小时查询次数直接结论max_queries_per_hour 是 mysql 原生支持的账户级限流机制它统计的是「该用户账号在任意连续 60 分钟内发起的所有语句总数」包括 select、show、explain甚至某些隐式元数据查询超限后立即报错 error 1226 (42000): user xxx has exceeded the max_questions resource。建用户时设置 vs 已有用户修改两种方式效果一致区别只在时机新建用户CREATE USER api_user% IDENTIFIED BY pwd WITH MAX_QUERIES_PER_HOUR 300;已有用户ALTER USER report_userlocalhost WITH MAX_QUERIES_PER_HOUR 100;取消限制恢复不限ALTER USER userhost WITH MAX_QUERIES_PER_HOUR 0;注意设为 0 才是“不限”不是省略为什么你设了却没生效常见踩坑点这个参数看似简单但实际中失效频率很高原因集中在三点应用用了连接池如 HikariCP、Druid——MAX_QUERIES_PER_HOUR 是按「用户身份」累计不是按连接或会话。一个连接反复执行 300 次 SELECT 就会触发限流和连接数无关系统自动查询也被计入比如某些 ORM 启动时执行 SELECT DATABASE() 或 SHOW VARIABLES这些都会消耗额度未刷新权限用 UPDATE mysql.user 直接改表后必须执行 FLUSH PRIVILEGES;而 CREATE/ALTER USER 不需要注意拼写错误写成 MAX_QUERY_PER_HOUR少 s或 MAX_QUESTIONS_PER_HOUR旧别名5.7 已弃用会导致语法错误或静默忽略。MAX_QUERIES_PER_HOUR 和其他资源限制的区别它和同类参数不是互斥而是各自独立计数 文小言 百度旗下新搜索智能助手有问题问小言。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2521054.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!