Accès au système de fichiers via SQL

Je viens de tomber sur une option intéressante dans MySQL pour accéder au système de fichiers et obtenir des informations précieuses, par exemple sur l'existence de fichiers et de dossiers ou de leur contenu. Cela peut être très utile comme alternative à la fonction php file_exists , car les informations sur l'existence du ou des fichiers peuvent toujours être utilisées dans la requête pour d'autres fonctions de tri et d'agrégation.


Si l' utilisateur de la base de données associé dispose du privilège FILE , vous pouvez utiliser la commande

SELECT LOAD_FILE(*PFAD ZUR DATEI*)

Pendant la requête, non seulement vérifier si un fichier existe, mais également lire son contenu.

Sur les systèmes Windows, il convient de noter que les barres obliques inverses doivent être marquées en conséquence dans le chemin d'accès au fichier (exemple: C: \\ Windows \\ System32 \\ drivers \\ etc \\ hosts). L'aspect de sécurité ne doit pas non plus être complètement ignoré, car lorsque le privilège FILE est accordé, l'accès à la base de données signifie automatiquement l'accès au reste du système de fichiers.

Pour garantir que non seulement les valeurs NULL sont renvoyées, il faut s'assurer que l'utilisateur qui exécute MySQL dispose des droits de lecture.

Pour accéder aux fichiers volumineux, la propriété globale "max_allowed_packet", qui est définie sur 1 Mo, doit être augmentée.

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

Vous pouvez désormais (après avoir redémarré le serveur) accéder à des fichiers d'une taille maximale de 512 Mo.

Retour