【问题标题】:How can I force limit the number of rows returned from a query for all users?如何强制限制从所有用户的查询返回的行数?
【发布时间】:2019-08-30 18:29:49
【问题描述】:

我们希望限制任何用户从我们的数据库中进行SELECT 查询时返回的行数。当然,您可以手动限制返回查询的行数,但我们希望在所有 SELECT 命令上强制附加 limit 10 之类的内容。用户将只能使用 MySQL CLI 从堡垒主机访问此数据库。 例如:

SELECT * FROM customer

将返回所有行。在没有用户指定的情况下,我们希望自动将命令转换为这样的内容,这样他们最多只能返回 10 行:

SELECT * FROM customer limit 10

任何实现所需功能的方式都可以(无论它是否是附加命令)。这可能吗?

【问题讨论】:

  • 创建限制返回行的视图,并且只允许用户从这些视图中进行选择。更好的是,根本不要让他们查询表。只需让他们通过电子邮件向您发送他们想要的列表,您就可以撰写回复,为他们提供信息。说真的,如果你不让他们得到任何结果,那么能够查询数据有什么用?

标签: mysql


【解决方案1】:

如果您不相信您的用户能够负责任地使用数据库,您可能不应该允许他们通过 mysql cli 直接访问数据库。开发一个报告层,您可以在其中强制执行此类限制。

如果你坚持使用mysql cli,那就开启--safe-updates选项,配置--select-limit选项。

或者,通过配置或批处理文件为这些用户设置sql_select_limit 设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    相关资源
    最近更新 更多