Åtkomst till filsystemet med SQL

Jag snubblade nyligen över ett smidigt sätt att komma åt filsystemet och hämta värdefull information, såsom existensen av filer och mappar eller deras innehåll. Detta kan vara mycket användbart som ett alternativ till PHP-funktionen ` file_exists` , eftersom informationen om filens/filernas existens kan användas i frågan för ytterligare sorterings- och aggregeringsfunktioner.


Om den associerade databasanvändaren har FILE-behörigheten kan du använda kommandot

SELECT LOAD_FILE(*PFAD ZUR DATEI*)

Under förfrågan inte bara kontrollera om en fil existerar utan också läsa upp dess innehåll.

På Windows-system bör det noteras att bakåtvända snedstreck i sökvägen till filen måste markeras därefter (exempel: C: \\ Windows \\ System32 \\ drivrutiner \\ etc \\ värdar). Säkerhetsaspekten bör inte heller ignoreras helt, eftersom när FILE-privilegiet beviljas innebär åtkomst till databasen automatiskt tillgång till resten av filsystemet.

För att säkerställa att inte bara NULL-värden returneras måste det säkerställas att användaren som kör MySQL har läsrättigheter.

För att komma åt stora filer måste den globala egenskapen "max_allowed_packet", som är inställd på 1 MB, ökas.

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

Du kan nu (efter omstart av servern) komma åt filer som är upp till 512 MB stora.

Tillbaka