如何在mysql中限制每个用户的用户带宽,存储和访问

时间:2014-07-02 12:12:58

标签: mysql

我需要限制每个用户对mysql数据库访问的访问权限。所以要求如下。

  1. 用户可以在MySQL实例中拥有专用存储,但他不能超过它。
  2. 限制当天某段时间的用户访问权限
  3. 每个用户每小时限制读写更新查询次数
  4. 限制每位用户的带宽。
  5. 如何在MySQL服务器中实现这一目标?

2 个答案:

答案 0 :(得分:0)

这里有一些想法。

  1. MySQL并没有为您提供设置磁盘使用配额的方法。您可以做的是检查每个数据库使用多少空间并通过其他方式强制执行配额:

    select sum(data_length+index_length),
    from information_schema.tables
    WHERE TABLE_SCHEMA = 'user_x_db'
    
  2. 不知道

  3. 在mysql.user
  4. 中设置max_updates
  5. 不知道

答案 1 :(得分:0)

<强> 1。用户可以在MySQL实例中拥有专用存储,但他无法超越

据我所知,没有直接的方法来控制每个用户的mysql实例的存储。您可以像akuzminsky所说的那样做,或者如果您有可以使用的用户的特殊表:

ALTER TABLE tablename MAX_ROWS=1000000 AVG_ROW_LENGTH=nnn;

有关详细信息,请查看:

  1. http://dev.mysql.com/doc/refman/5.7/en/limits-frm-file.html
  2. http://dev.mysql.com/doc/refman/5.7/en/table-size-limit.html
  3. <强> 2。限制用户访问当天的某段时间

    我不知道直接的方式。我可以想象一个cronjob运行与问题3类似的命令,但应该只是在你真的需要它并且没有其他解决方案时:)

    第3。限制每个用户每小时的读写更新查询次数

    她可以使用GRANT命令的以下某些参数:

    GRANT ALL ON databasename.* TO 'username'@'server'
           WITH MAX_QUERIES_PER_HOUR 20
           MAX_UPDATES_PER_HOUR 10
           MAX_CONNECTIONS_PER_HOUR 5
           MAX_USER_CONNECTIONS 2;
    

    (记得在之后运行FLUSH PRIVILEGES;

    有关详细信息,请查看:

    http://dev.mysql.com/doc/refman/5.7/en/user-resources.html

    <强> 4。限制每位用户的带宽

    应该是数据库和应用程序服务器之间的东西。