Вызов внешней программы из MySQL
Главная → Статьи → Вызов внешней программы из MySQL
С развитием хранимых процедур и функций стали появлятся идеи по использованию их в различных целях связанных с вызовом внешних приложений. Например вызвать скрипт отправки e-mail по завершению транзакции. SQL реализованный в рамках MySQL не позволяет делать вызовы внешних приложений и это правильно. Представьте, что SQL-injection может запросто разрушить весь ваш сервер. Но не будем о грустном, о нем я вас предупредил.
Теперь займемся решением нашей задачи. И оно существует! Нас спасет UDF! Это функции определяемые пользователем.
UDF репозитарий нам предлагает библиотеку lib_mysqludf_sys для работы с операционной системой, которая содержит в себе 4 функции:
- sys_eval(arg1) - выполняет произвольную команду и возвращает вывод внешней команды
- sys_exec(arg1) - выполняет произвольную команду и возвращает код возврата
- sys_get(arg1) - позволяет получить переменную окружения или NULL если таковой нет
- sys_set(arg1, arg2) - позволяет задать переменную окружения (параметры: имя переменной, значение), возвращает 0 в случае успеха
Вы можете воспользоваться функцией lib_mysqludf_sys_info() для получения информации о версии lib_mysqludf_sys.
Установка относительно проста - нужно разместить скомпилированную библиотеку в соответствующее место. После этого выполнить ряд запросов
CREATE FUNCTION sys_eval RETURNS STRING SONAME 'lib_mysqludf_sys.so'; CREATE FUNCTION sys_exec RETURNS INT SONAME 'lib_mysqludf_sys.so'; CREATE FUNCTION sys_get RETURNS STRING SONAME 'lib_mysqludf_sys.so'; CREATE FUNCTION sys_set RETURNS STRING SONAME 'lib_mysqludf_sys.so';Вы можете исключить те функции, которые вам не нужны.
При необходимости UDF можно удалять:
DROP FUNCTION sys_eval;
Замечу, что UDF доступны ВСЕМ пользователям БД, доступ к ним нельзя ограничить и именно поэтому они настолько опасны. Помните, что команды выполняются в контексте пользователя, от имени которого запущен mysqld.
Прежде чем скачать библиотеку, ознакомьтесь со следующими материалами
Скачать UDF можно по ссылке www.mysqludf.org/lib_mysqludf_sys/lib_mysqludf_sys_0.0.3.tar.gz
Другие материалы:
- Хранимые процедуры и триггеры
- Курсоры в MySQL
- EMS SQL Manager - Создание таблицы
- Загрузка большого файла (1 Mb) в Blob-поле
- Сайт компании Альпика
Комментарии:
e-mail (не публикуется):
комментарий:
Вы можете оставить первый комментарий.