Toegang tot het bestandssysteem met behulp van SQL

Ik kwam zojuist een leuke optie tegen in MySQL om het bestandssysteem aan te boren en waardevolle informatie te verkrijgen, bijvoorbeeld over het bestaan ​​van bestanden en mappen of hun inhoud. Dit kan erg handig zijn als alternatief voor de php-functie file_exists , aangezien de informatie over het bestaan ​​van de bestanden nog steeds kan worden gebruikt in de query voor verdere sorteer- en aggregatiefuncties.


Als de gekoppelde databasegebruiker de FILE-bevoegdheid heeft , kunt u de opdracht gebruiken

SELECT LOAD_FILE(*PFAD ZUR DATEI*)

Controleer tijdens de zoekopdracht niet alleen of een bestand bestaat, maar lees ook de inhoud voor.

Op Windows-systemen moet worden opgemerkt dat backslashes in het pad naar het bestand dienovereenkomstig moeten worden gemarkeerd (bijvoorbeeld: C: \\ Windows \\ System32 \\ drivers \\ etc \\ hosts). Het veiligheidsaspect mag ook niet volledig worden genegeerd, aangezien wanneer de FILE-privilege wordt verleend, toegang tot de database automatisch toegang tot de rest van het bestandssysteem betekent.

Om ervoor te zorgen dat niet alleen NULL-waarden worden geretourneerd, moet ervoor worden gezorgd dat de gebruiker die MySQL uitvoert, leesrechten heeft.

Om ook toegang te krijgen tot grote bestanden, moet de algemene eigenschap "max_allowed_packet", die is ingesteld op 1 MB, worden verhoogd.

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

U kunt nu (na het herstarten van de server) toegang krijgen tot bestanden die maximaal 512 MB groot zijn.

Terug