MySQL - 根据用户限制大型查询

时间:2014-05-21 20:51:11

标签: mysql

MySQL是否有限制用户运行大型查询的选项?假设用户可以查询的最大记录数仅为10000行或10MB。

编辑: 目标是我想让我的数据库中的一堆表对用户进行选择访问。我很好,他们一次选择几个项目,但不允许他们转储/加入表格让我们说最后两个月的数据(因为这是很多工作量,可能会使服务器中运行的其他服务陷入困境)

因此,如果用户请求此类查询,则应该输出错误并返回与“超出限制”或相关内容相对应的错误代码。

3 个答案:

答案 0 :(得分:0)

如果你想为查询设置限制只是使用限制,在执行查询时请执行以下示例:

SELECT id FROM idlist WHERE processed=0 ORDER BY id LIMIT 10000;

答案 1 :(得分:0)

AFAIK,没有此类设置,但您可以创建如下所示的视图

create view myview 
as
select * from table
order by some_column   
limit 10000

您可以根据任何特定条件(例如

)更改要创建视图的查询
create view myview 
as
select * from table
where some_condition 
order by some_column   
limit 10000

然后,您可以为这些特定的受限用户分配select权限。

GRANT SELECT ON myview to restricted_user1

答案 2 :(得分:0)

结合--safe-udpates,您可以使用select_limitmax_join_size

由于您在命令行中指定了这些设置(和/或 my.cnf ),因此需要重新启动服务器。

不幸的是,这不是“每个用户”。变量不是动态的。

您可以(相当容易)将LIMIT附加到用户的查询中(因为它是查询中的最后一个子句)。