MySQL管理——监视用户活动、限制使用资源

2023-09-22 15:41:09 浏览数 (1)

监视用户的活动

代码语言:javascript复制
mysql> SHOW PROCESSLIST;
 ---- ----------------- ----------- ------ --------- ------ ------------------------ ------------------ 
| Id | User            | Host      | db   | Command | Time | State                  | Info             |
 ---- ----------------- ----------- ------ --------- ------ ------------------------ ------------------ 
|  4 | event_scheduler | localhost | NULL | Daemon  | 2379 | Waiting on empty queue | NULL             |
|  8 | root            | localhost | NULL | Query   |    0 | starting               | SHOW PROCESSLIST |
 ---- ----------------- ----------- ------ --------- ------ ------------------------ ------------------ 
2 rows in set (0.00 sec)
  • • Id:连接的ID
  • • User:执行该语句的MySQL用户
  • • Host:执行该语句的客户端所在的主机名称
  • • db:选择的默认数据库,如果没有选择,显示为NULL
  • • Command:线程执行的命令类型
  • • Time:线程进入当前状态的时长(秒)
  • • Statement:用于识别线程正在进行的活动、事件或者状态
  • • Info:关联语句的前100个字符,获取详细信息使用“SHOW FULL PROCESSLIST”

使用“KILL id”语句杀掉进程

限制用户使用的资源

当发现某些用户使用大量的连接占用服务器的资源时,可以通过设置全局变量“max_user_connections”来限制用户的连接,并可以通过下面的变量限制单独的用户使用资源:

  • • max_queries_per_hour:每个用户每小时执行的最大查询数量
  • • max_updates_per_hour:每个用户每小时执行的最大更新数量
  • • max_connections_per_hour:每用户每小时的最大连接数量
  • • max_user_connections:允许同时连接的数量
  • MAX_STATEMENT_TIME:允许的最大查询执行时间,以秒为单位。超过该时间会自动终止查询。
  • MAX_USER_DEFINED_VARIABLES:允许的最大用户定义变量数量。
  • MAX_TMP_TABLES:允许的最大临时表数量。
  • MAX_JOIN_SIZE:允许的最大连接表大小(用于防止过大的连接查询)。
代码语言:javascript复制
mysql可以限制用户单次查询的数据量吗,比如每次最大只可以查5条数据
ALTER USER 'root'@'%'
    WITH MAX_QUERIES_PER_HOUR 100
        MAX_UPDATES_PER_HOUR 20
        MAX_CONNECTIONS_PER_HOUR 0
        MAX_USER_CONNECTIONS 10;

如果希望将这些值重新设置为默认值,则可以将这些值设置为0,例如,

代码语言:javascript复制
ALTER USER 'root'@'%' WITH MAX_CONNECTIONS_PER_HOUR 0;

我有个大胆的想法

小伙伴在平常有没有遇到以下这种情况:遇到技术难题时,网上教程一堆堆,优秀的很多,但也有很多是过时的,或者是copy来copy去,甚至错别字都没改。

我公众号的技术文章,都是亲自校验过的。至少可以保证在发文的一段时间,不会过时。如果你在实操过程中,有遇到问题,可以在同名公众号留言,免费解答,相互学习,相互成长^v^

0 人点赞