Adgang til filsystemet ved hjælp af SQL

Jeg stødte lige på en god mulighed i MySQL til at trykke på filsystemet og få værdifuld information, for eksempel om eksistensen af ​​filer og mapper eller deres indhold. Dette kan være meget nyttigt som et alternativ til php-funktionen file_exists , da informationen om eksistensen af ​​filerne stadig kan bruges i forespørgslen til yderligere sorterings- og aggregeringsfunktioner.


Hvis den tilknyttede databasebruger har FILE-privilegiet , kan du bruge kommandoen

SELECT LOAD_FILE(*PFAD ZUR DATEI*)

Under forespørgslen skal du ikke kun kontrollere, om der findes en fil, men også læse dens indhold ud.

På Windows-systemer skal det bemærkes, at tilbageslag i stien til filen skal markeres i overensstemmelse hermed (eksempel: C: \\ Windows \\ System32 \\ drivere \\ osv \\ værter). Sikkerhedsaspektet bør heller ikke ignoreres fuldstændigt, da når FILE-privilegiet tildeles, betyder adgang til databasen automatisk adgang til resten af ​​filsystemet.

For at sikre, at ikke kun NULL-værdier returneres, skal det sikres, at den bruger, der kører MySQL, har læserettigheder.

For at få adgang til store filer skal den globale ejendom "max_allowed_packet", der er indstillet til 1 MB, øges.

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

Du kan nu (efter genstart af serveren) få adgang til filer, der er op til 512 MB i størrelse.

Tilbage