webentwicklung-frage-antwort-db.com.de

MYSQL in Outfile "Zugriff verweigert" - aber mein Benutzer hat "ALL" Zugriff .. und der Ordner ist CHMOD 777

Irgendwelche Ideen?

SELECT * INTO OUTFILE '/home/myacnt/docs/mysqlCSVtest.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '*'
LINES TERMINATED BY '\n'
FROM tbl_property 
WHERE managerGroupID = {$managerGroupID}

Error:

Access denied for user 'asdfsdf'@'localhost' (using password: YES)
68
Shackrock

Versuchen Sie, diesen SQL-Befehl auszuführen:

> grant all privileges 
  on YOUR_DATABASE.* 
  to 'asdfsdf'@'localhost' 
  identified by 'your_password';
> flush privileges; 

Es scheint, dass Sie Probleme mit der Verbindung zur Datenbank haben und nicht in den von Ihnen genannten Ordner schreiben.

Stellen Sie außerdem sicher, dass Sie dem Benutzer 'asdfsdf'@'localhost'FILE gewährt haben.

> GRANT FILE ON *.* TO 'asdfsdf'@'localhost';
110

Ehrlich gesagt habe ich mich nicht um die Stipendien gekümmert und das hat auch ohne die Privilegien geklappt:

echo "select * from employee" | mysql --Host=HOST --port=PORT --user=UserName --password=Password DATABASE.SCHEMA > output.txt
44
user1028904

Wie @fijaaron sagt,

  1. GRANT ALL impliziert nicht GRANT FILE
  2. GRANT FILE funktioniert nur mit *.*

Dann mach's

GRANT FILE ON *.* TO user;
19
e18r

Da cP/WHM die Möglichkeit zum Ändern von Benutzerrechten als root in PHPMyAdmin weggenommen hat, müssen Sie die Befehlszeile verwenden, um:

mysql>  GRANT FILE ON *.* TO 'user'@'localhost';

In Schritt 2 kann der Benutzer eine Datei in einem bestimmten Ordner sichern. Es gibt einige Möglichkeiten, dies zu tun, aber am Ende habe ich einen Ordner darin abgelegt:

/home/user/tmp/db

und

chown mysql:mysql /home/user/tmp/db

Dadurch kann der MySQL-Benutzer die Datei schreiben. Wie in früheren Postern bereits erwähnt, können Sie auch den temporären MySQL-Ordner verwenden. Ich nehme an, das ist nicht wirklich wichtig, aber Sie möchten auf keinen Fall die 0777-Berechtigung (weltschreibbar) festlegen, es sei denn, Sie möchten, dass die Welt Ihre Daten sieht. Möglicherweise liegt ein Problem vor, wenn Sie den Vorgang wiederholen möchten, da INTO OUTFILE Nicht funktioniert, wenn die Datei vorhanden ist. Wenn Ihre Dateien einem anderen Benutzer gehören, funktioniert es nicht, nur unlink($file) zu versuchen. Wenn Sie wie ich sind (paranoid wegen 0777), können Sie Ihr Zielverzeichnis wie folgt festlegen:

chmod($dir,0777)

kurz vor dem Ausführen des SQL-Befehls

chmod($dir,0755)

unmittelbar danach, gefolgt von unlink(file), um die Datei zu löschen. Auf diese Weise läuft alles unter Ihrem Webbenutzer und Sie müssen den mysql-Benutzer nicht aufrufen.

4
Grindlay