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