【问题标题】:Lua script to stop firing a query in mysql via mysql proxyLua脚本通过mysql代理停止在mysql中触发查询
【发布时间】:2014-06-27 09:02:14
【问题描述】:

我是lua语言的初学者。主要概念是当用户在mysql中触发DROP TABLE命令时它不应该被执行。但是他可以像往常一样在mysql中触发所有其他命令。但我不想要为此使用GRANTS。是否有任何luaScript 可以通过mysql-proxy 执行此操作?

例如:

mysql> DROP TABLE T1;
Please wait for authentication

LuaSql 也有助于通过mysql-proxy 执行此任务吗?

希望我把这个想法说清楚了。有人帮我解决这个问题。在此先感谢。

【问题讨论】:

  • 很抱歉不得不问这个问题,但是,您能否使用通用语法和排版规则重新表述您的问题?它很难阅读,因为几乎所有内容都是一行/一句话......
  • @nonchip 我做了一些改动,希望你能理解
  • 您可以尝试过滤任何出现的字符串“drop”,但我认为您真的想为此使用授权。
  • @nonchip 我尝试了一些方法,其中只有在执行查询后才能通过 mysql-proxy 使用字符串出现进行过滤。但我不知道在执行查询之前如何过滤。
  • 我可以建议将标题更改为更准确的内容:“使用 mysql-proxy 阻止/删除发送到服务器的特定查询”。当前标题在技术上是正确的,但描述性较差,当我亲自搜索答案时,它在多次使用谷歌不同的尝试和不同的措辞后显示。

标签: mysql lua mysql-proxy luasql


【解决方案1】:

是的,你可以这样做。这里的想法是检查查询是否满足您要过滤的要求,如果满足则不将其发送到服务器

function read_query(packet)
        if string.byte(packet) == proxy.COM_QUERY then
                query = packet:sub(2)
                if condition(query) then
                   proxy.response = {
                           type = proxy.MYSQLD_PACKET_OK,
                   }
                   return proxy.PROXY_SEND_RESULT
                end
        end
end

这会检查代理接收到的每个查询condition,如果匹配,它将只向客户端返回一个成功而不传递查询。从而有效地删除查询。

【讨论】:

    猜你喜欢
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 2019-07-20
    • 2016-07-27
    • 2018-08-22
    • 1970-01-01
    相关资源
    最近更新 更多