Скрипт Lua для прекращения запуска запроса в MySQL через прокси MySQL

Я новичок в языке lua. Основная концепция - когда пользователь запускает DROP TABLE Команда в MySQL не должна выполняться. Но он может запускать все остальные команды, как обычно в MySQL. Но я не хочу использовать GRANTS для этого. Есть ли luaScript выполнить это действие через mysql-proxy?

Например:

mysql> DROP TABLE T1;
Please wait for authentication

Также является LuaSql полезно выполнить эту задачу через mysql-proxy?

Надеюсь, я прояснил идею. Кто-то поможет мне решить эту проблему. Спасибо заранее.

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 и если он совпадает, он просто вернет УСПЕХ клиенту без доставки запроса. Таким образом, эффективно отбрасывая запрос.

Другие вопросы по тегам