MySQL-基于用户限制大型查询

MySQL-基于用户限制大型查询,mysql,Mysql,MySQL是否有限制用户运行大型查询的选项?假设用户可以查询的最大记录数只有10000行或10MB 编辑: 目标是我想让用户选择访问数据库中的一堆表。我同意他们一次只选择几个项目,但不允许他们转储/连接表,比如说最近两个月的数据(因为这会带来很大的工作量,可能会使服务器上运行的其他服务陷入困境) 因此,如果用户请求此类查询,它应该出错并返回与“超出限制”或相关内容相对应的错误代码。如果您想为查询设置限制,只需使用限制,在执行查询时执行以下示例: SELECT id FROM idlist WHE

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

编辑: 目标是我想让用户选择访问数据库中的一堆表。我同意他们一次只选择几个项目,但不允许他们转储/连接表,比如说最近两个月的数据(因为这会带来很大的工作量,可能会使服务器上运行的其他服务陷入困境)


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

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

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

好的,现在没有这样的设置,但是你可以创建一个如下的视图

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
与组合使用时,您可以使用
选择限制
最大加入大小

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

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


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

@iBrazilian2,这不是一个相关的问题。没错,这是一个错误的示例。即使是具有小结果集的查询也会占用大量资源。你的目标是什么?我认为最终用户不太可能创建自己的查询。@VMai,我已经用目标更新了我的问题,这些特定用户有时会得到错误的问题答案。我不认为这是我推荐的一种方式。@VMai,除非MySQL中有任何特定的选项(我不知道);我认为这是OP试图实现的目标的解决方案。另外,我很高兴知道为什么你们不认为这是推荐的。因为他们得到了错误的结果,正如我所说的。它们得到错误的结果,因为查询可能缺少原始表的相关行。@VMai,根据发布的问题,用户只需要被限制获取不超过10K行。您可以说,我给出的查询将给出任意10K行。我将通过
添加一个
订单。我想那就足够了?我不能说。假设我想知道某一列的值的计数:
SELECT col1,count(col1)FROM mytable GROUP BY col1
,在mytable的一百万行中,col1有2500个不同的值。用这样的观点如何做到这一点?这不是我的问题,而是其他用户的问题。因此,我无法确保他们在it中实现限制是的,我知道,但这只是一个可以应用于用户的示例,如果您使用限制作为变量,不一定要应用10000,这可以是一个变量$LimitUser,示例:从用户中选择id,其中年龄>0按id限制排序$LimitUser;