【发布时间】:2014-07-02 12:12:58
【问题描述】:
我需要限制每个用户对 mysql 数据库的访问。所以要求如下。
- 用户可以在 MySQL 实例中拥有一个专用存储,并且他不能超过它。
- 在一天中的一段时间内限制用户访问
- 限制每个用户每小时的读写更新查询次数
- 限制每个用户的带宽。
如何在 MySQL 服务器中实现这一点?
【问题讨论】:
-
你为什么需要所有这些?
标签: mysql
我需要限制每个用户对 mysql 数据库的访问。所以要求如下。
如何在 MySQL 服务器中实现这一点?
【问题讨论】:
标签: mysql
1.用户可以在 MySQL 实例中拥有一个专用存储,并且他不能超过它
据我所知,没有直接的方法可以控制每个用户对 mysql 实例的存储。你可以像akuzminsky 说的那样做,或者如果你有特殊的表格供用户使用:
ALTER TABLE tablename MAX_ROWS=1000000 AVG_ROW_LENGTH=nnn;
更多信息请看:
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.限制每个用户的带宽
应该是数据库和应用服务器之间的东西。
【讨论】:
这里有一些想法。
MySQL 没有给你设置磁盘使用配额的方法。您可以做的是检查每个数据库使用了多少空间并通过其他方式强制执行配额:
select sum(data_length+index_length),
from information_schema.tables
WHERE TABLE_SCHEMA = 'user_x_db'
不知道
【讨论】: