用户和权限限制用户使用资源

举报
Ustinian_2022 发表于 2022/07/27 17:56:30 2022/07/27
【摘要】 30.9 限制用户使用资源在MySQL中,GRANT语句不仅可以用来创建用户,为用户授权和修改用户的权限,而且还可以用来限制MySQL用户使用的资源。例如,可以限制每个用户每小时的查询和更新次数、每小时执行的连接次数和同时建立的连接次数等。30.9.1 限制用户使用资源示例例如,为binghe_test用户授予goods数据库上的查询和更新权限,并且每小时的查询次数最多为100,每小时的更新...

30.9 限制用户使用资源

在MySQL中,GRANT语句不仅可以用来创建用户,为用户授权和修改用户的权限,而且还可以用来限制MySQL用户使用的资源。例如,可以限制每个用户每小时的查询和更新次数、每小时执行的连接次数和同时建立的连接次数等。


30.9.1 限制用户使用资源示例

例如,为binghe_test用户授予goods数据库上的查询和更新权限,并且每小时的查询次数最多为100,每小时的更新次数最多为20,使用binghe_test用户最多同时有10个并发连接。


mysql> GRANT SELECT, UPDATE ON goods.* TO 'binghe_test'@'localhost'
    -> WITH MAX_QUERIES_PER_HOUR 100
    -> MAX_UPDATES_PER_HOUR 20
    -> MAX_USER_CONNECTIONS 10;
Query OK, 0 rows affected, 1 warning (0.00 sec)

SQL语句执行成功,查看binghe_test用户的资源限制情况。


mysql> SELECT user, host, max_questions, max_updates, max_user_connections
    -> FROM mysql.user WHERE user = 'binghe_test' AND host = 'localhost';
+-------------+-----------+---------------+-------------+----------------------+
| user        | host      | max_questions | max_updates | max_user_connections |
+-------------+-----------+---------------+-------------+----------------------+
| binghe_test | localhost |           100 |          20 |                   10 |
+-------------+-----------+---------------+-------------+----------------------+
1 row in set (0.00 sec)

可以看到,binghe_test用户每小时的查询次数最多为100,每小时的更新次数最多为20,使用binghe_test用户最多同时有10个并发连接。


30.9.2 修改用户的资源限制

将binghe_test用户每小时的查询次数限制修改为200,将每小时的更新次数限制修改为50。


mysql> GRANT USAGE ON *.* TO 'binghe_test'@'localhost'
    -> WITH MAX_QUERIES_PER_HOUR 200
    -> MAX_UPDATES_PER_HOUR 50;
Query OK, 0 rows affected, 1 warning (0.00 sec)

SQL语句执行成功,查看binghe_test用户的资源限制情况。


mysql> SELECT user, host, max_questions, max_updates, max_user_connections
    -> FROM mysql.user WHERE user = 'binghe_test' AND host = 'localhost';
+-------------+-----------+---------------+-------------+----------------------+
| user        | host      | max_questions | max_updates | max_user_connections |
+-------------+-----------+---------------+-------------+----------------------+
| binghe_test | localhost |           200 |          50 |                   10 |
+-------------+-----------+---------------+-------------+----------------------+
1 row in set (0.00 sec)

可以看到,binghe_test用户每小时的查询次数限制已经被修改为200,每小时的更新次数限制已经被修改为50。


30.9.3 解除用户的资源限制

删除用户的资源限制时,只需要将相应的资源限制设置为0即可。例如,删除binghe_test的资源限制。


mysql> GRANT USAGE ON *.* TO 'binghe_test'@'localhost'
    -> WITH MAX_QUERIES_PER_HOUR 0
    -> MAX_UPDATES_PER_HOUR 0
    -> MAX_USER_CONNECTIONS 0;
Query OK, 0 rows affected, 1 warning (0.00 sec)

SQL语句执行成功,查看binghe_test用户的资源限制情况。


mysql> SELECT user, host, max_questions, max_updates, max_user_connections
    -> FROM mysql.user WHERE user = 'binghe_test' AND host = 'localhost';
+-------------+-----------+---------------+-------------+----------------------+
| user        | host      | max_questions | max_updates | max_user_connections |
+-------------+-----------+---------------+-------------+----------------------+
| binghe_test | localhost |             0 |           0 |                    0 |
+-------------+-----------+---------------+-------------+----------------------+
1 row in set (0.00 sec)

binghe_test用户的资源限制值都为0,说明已经解除了binghe_test用户的资源限制。

注意:为了不影响用户的权限,修改或删除用户的资源限制时,需要使用如下形式的SQL语句。


mysql> GRANT USAGE ON *.* TO '用户名'@'主机名' 
    -> WITH MAX_QUERIES_PER_HOUR 查询次数
    -> MAX_UPDATES_PER_HOUR 修改次数
    -> MAX_USER_CONNECTIONS 连接次数
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。