Выполнение системных команд из MySQL с помощью UDF(lib_mysqludf_sys)

Сегодня понадобилось выполнить системную команду ОС Linux из MySQL. Оказалось, что сделать это из коробки не получится. Зато с одной замечательной библиотечкой всё вполне срослось.

Компиляция и установка

1. Качаем библиотеку lib_mysqludf_sys
2. Распаковываем архив, удаляем оттуда всё кроме lib_mysqludf_sys.c и lib_mysqludf_sys.sql
3. Компилируем библиотеку из c-файла

3. Копируем .so файл в /usr/lib/mysql/plugins

4. Выполняем дамп lib_mysqludf_sys.sql

5. Проверяем результат:

Теперь можно исполнять системные команды из mysql. Даже не буду говорить, что это опасно и является потенциальной дырой в безопасности. Думаю, сами знаете. Но именно таким образом можно построить мостик из MySQL во внешнее приложение.

Список добавляемых функций.

Библиоетка lib_mysqludf_sys содержит несколько функций, которые позволяют взаимодействовать с операционной системой.

  1. sys_eval – выполняет переданную команду и возвращает её вывод
  2. sys_exec – выполняет переданную команду и возвращает её код возврата
  3. sys_get – получает значение переменной окружения
  4. sys_set – создает переменную окружения и устанавливает/обновляет её значение

Используйте функцию lib_mysqludf_sys_info() для вывода информации о текущей версии библиотекиlib_mysqludf_sys.

Литература

http://www.mysqludf.org/libraries.php
UDF в MySQL, json или то, как забрать обновления данных из БД

Leave a Comment