2014-06-27 19 views
1

我是一个初学者到lua语言。主要概念是当用户在mysql中启动DROP TABLE命令时,它不应该被执行。但是他可以将所有其他命令通常在mysql.But我不想为此使用GRANTS。是否有任何luaScript通过mysql-proxy执行此操作?Lua脚本停止在mysql中通过mysql代理发起查询

例如:

mysql> DROP TABLE T1; 
Please wait for authentication 

也就是LuaSql有益通过mysql-proxy来执行这项任务?

希望我明确的想法。有人帮我解决这个问题。提前感谢。

+0

抱歉,不得不问这个问题,但是,请问您是否可以用普通的语法和排版规则来修改您的问题?这是非常难以阅读,因为几乎所有的一行/句子... – nonchip

+0

@nonchip我做了一些改变。希望你能理解它 – robin

+1

你可以尝试过滤字符串“drop”的任何发生,但我认为你真的想为此使用补助金。 – nonchip

回答

0

是的,你可以做到这一点。这里的想法是要检查查询它是否满足了你想过滤和要求,如果这样不把它发送到服务器

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每个查询,如果它匹配它会只需将SUCCESS返回给客户端,而无需发送查询。从而有效地删除查询。