Доступ к файловой системе с помощью SQL

Я только что наткнулся на приятную возможность в MySQL подключиться к файловой системе и получить ценную информацию, например о существовании файлов и папок или их содержимом. Это может быть очень полезно в качестве альтернативы функции php file_exists , поскольку информация о существовании файла (ов) все еще может быть использована в запросе для дальнейшей сортировки и функций агрегирования.


Если связанный пользователь базы данных имеет привилегию FILE , вы можете использовать команду

SELECT LOAD_FILE(*PFAD ZUR DATEI*)

Во время запроса не только проверяют, существует ли файл, но и считывают его содержимое.

В системах Windows следует отметить, что обратная косая черта должна быть отмечена соответствующим образом в пути к файлу (пример: C: \ Windows \ System32 \ drivers \ etc \ hosts). Аспект безопасности также не следует полностью игнорировать, поскольку, когда предоставляется привилегия FILE, доступ к базе данных автоматически означает доступ к остальной части файловой системы.

Чтобы гарантировать, что возвращаются не только значения NULL, необходимо убедиться, что пользователь, использующий MySQL, имеет права чтения.

Чтобы также получить доступ к большим файлам, необходимо увеличить глобальное свойство max_allowed_packet, равное 1 МБ.

mysql -u... -p...
set global max_allowed_packet = 1024 * 1024 * 512;
exit;

Теперь вы можете (после перезапуска сервера) получить доступ к файлам размером до 512 МБ.

Назад