MYSQL: LOAD DATA INFILE klassisches Rechteproblem von MYSQL User im Dateisystem wie lösen auf Netcup???

  • Code
    Access denied for user 'k121218_vdesk'@'%' (using password: YES)

    Immer wenn ich versuche ein zuvor upgeloadetes CSV in eine Tabelle zu importieren schlägt der versuch fehl.
    habe schon unterschiedliche Verzeichnisse auf meinem "Server": Hosting133061 - Webhosting 2000 SE int a1 (a2fc4)
    durchprobiert keine Chance.


    ist diese Funktion generell unterbunden oder gibt es Standardverzeichnisse wo Mysql die Leserechte hat?

    Stehe total an wäre nett wenn mir wer helfen könnte.

    Der Workaround ist sehr mühsam und vor allem ungut da er schlechte Performance hat und viel Serverressourcen benötigt.=O

  • Wäre auch ein Sicherheits-GAU, weil dann (wenn es funktionieren würde) JEDER User ALLE Dateien von anderen Usern einlesen könnte. Das das nicht sinnvoll ist, sollte logisch sein.


    Wenn Du die Funktion brauchst, ohne Umweg über PHP & Co., wird es max. bei einem (managed) vServer klappen. Aber auch dort würde ich eher davon abraten. Man hebelt damit leicht Sicherheitsfunktionen aus.


    Eventuell findest Du eine performantere Lösung über SSH (Bash & Co.) oder, wenn es über HTTP sein muss, halt exec() u.ä. Funktionen. Wenn Du uns ein Beispiel Deiner CSV-Daten zeigen würdest, könnte man sicher etwas basteln oder eine fertige Lösung im Internet finden. :)

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • ich verstehe nicht wie das gehen soll wenn der mysql server auf einer anderen physischen maschine ist die ja auf meinen host keine leserechte im dateisystem hat. das mysqladmin rennt ja auf der selben maschine wie mysql dort geht es ja.


    Hosting133061 - Webhosting 2000 SE int a1 (a2fc4) auf diesem host weiß ich mir keine mysqlinstallation die ich ansprechen könnte, aber wie gesagt ich bin nur autodidakt und mache in nichtkommerzielles projekt das per chron job sich daten aus einer öffentlichen datenquelle über das http protokoll 1x am tag holt.


    da in der vergangenheit viel php oop programmiert habe wäre ich für einen profitip dankbar, sonst muss ich halt selbst was zum parsen schreiben

  • Um dem Hinweis von Patrick0815 mal weiter auf die Spur zu gehen:


    Ist DB-Zugriff von anderen Hosts erlaubt?


    pasted-from-clipboard.png


    Wichtig genau aus eben jenem Grund, da die DB-Server separat laufen und nicht auf den Webservern.

    Zum Testen würde ich hier "beliebige Hosts" auswählen, später kann man diese auf den Webserver u.a. beschränken.


    Edit: Antwort kam zu spät. Also doch kein "Access denied" Problem mehr? Dann hat sich mein Hinweis vermutlich erübrigt. :)

  • Wäre auch ein Sicherheits-GAU, weil dann (wenn es funktionieren würde) JEDER User ALLE Dateien von anderen Usern einlesen könnte. Das das nicht sinnvoll ist, sollte logisch sein.


    Wenn Du die Funktion brauchst, ohne Umweg über PHP & Co., wird es max. bei einem (managed) vServer klappen. Aber auch dort würde ich eher davon abraten. Man hebelt damit leicht Sicherheitsfunktionen aus.


    Eventuell findest Du eine performantere Lösung über SSH (Bash & Co.) oder, wenn es über HTTP sein muss, halt exec() u.ä. Funktionen. Wenn Du uns ein Beispiel Deiner CSV-Daten zeigen würdest, könnte man sicher etwas basteln oder eine fertige Lösung im Internet finden. :)

    die simple Lösung für dieses "problem" ist schlicht und einfach *mysqli* verwenden und alles geht.
    mann kann sich natürlich weiterhin mit der rechten kleinen Zehe am linken Ohr krazen...

  • hatte ganz vergessen zu erwähnen dass es natürlich um die Variante: LOAD DATA LOCAL INFILE geht.

    auszug aus dem Code meiner Importschnittstelle:


    $sql = "LOAD DATA LOCAL INFILE '".$this->csvTables[$entry]."'\n"

    ." INTO TABLE ".$this->targetDATABASE.".".$this->MySQL_Tables[$entry]."\n"

    ." FIELDS TERMINATED BY '".$this->SEPARATOR."'\n"

    ." ENCLOSED BY ''\n"

    ." LINES TERMINATED BY '\n'\n"

    ." IGNORE 1 LINES"

    ." (".substr($colNamesList,3).")";

  • Ich muss an dieser Stelle zugeben, dass mir das "LOCAL" Flag bisher unbekannt war. Da hätte ich mal die Dokumentation erneut lesen sollen. Mea culpa & Danke fürs Teilen der Lösung! :)

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

    Einmal editiert, zuletzt von KB19 ()