Доступ до файлової системи за допомогою SQL

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


Якщо пов'язаний користувач бази даних має привілей FILE , ви можете скористатися командою

SELECT LOAD_FILE(*PFAD ZUR DATEI*)

Під час запиту не тільки перевірте, чи існує файл, а й прочитайте його вміст.

У системах Windows слід зазначити, що зворотні скісні риски повинні бути позначені відповідним чином у шляху до файлу (приклад: C: \\ Windows \\ System32 \\ драйвери \\ тощо \\ хости). Також не слід повністю ігнорувати аспект безпеки, оскільки при наданні привілею FILE доступ до бази даних автоматично означає доступ до решти файлової системи.

Щоб забезпечити повернення не лише NULL-значень, необхідно забезпечити, щоб користувач, який запускає MySQL, мав права на читання.

Для доступу до великих файлів слід збільшити загальну властивість "max_allowed_packet", яка встановлена ​​на 1 МБ.

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

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

Назад