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

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


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

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 МБ.

Назад