Ich versuche, den Inhalt einer Tabelle mit einer MySQL SELECT INTO OUTFILE-Anweisung in eine CSV-Datei zu kopieren. Wenn ich mache:
SELECT column1, column2
INTO OUTFILE 'outfile.csv'
FIELDS TERMINATED BY ','
FROM table_name;
outfile.csv wird auf dem Server in demselben Verzeichnis erstellt, in dem die Dateien dieser Datenbank gespeichert sind.
Wenn ich jedoch meine Abfrage in Folgendes ändere:
SELECT column1, column2
INTO OUTFILE '/data/outfile.csv'
FIELDS TERMINATED BY ','
FROM table_name;
Ich bekomme:
ERROR 1 (HY000): Can't create/write to file '/data/outfile.csv' (Errcode: 13)
Errcode 13 ist ein Berechtigungsfehler, aber ich erhalte ihn auch dann, wenn ich den Besitz von / data in mysql: mysql ändere und ihm 777 Berechtigungen erteile. MySQL läuft als Benutzer "mysql".
Seltsamerweise kann ich die Datei in / tmp erstellen, nur in keinem anderen Verzeichnis, das ich ausprobiert habe, selbst wenn die Berechtigungen so festgelegt sind, dass der Benutzer mysql in das Verzeichnis schreiben kann.
Dies ist MySQL 5.0.75, das unter Ubuntu ausgeführt wird.
/tmp
.