Da cP / WHM die Möglichkeit zum Ändern von Benutzerrechten als Root in PHPMyAdmin aufgehoben hat, müssen Sie die Befehlszeile verwenden, um:
mysql> GRANT FILE ON *.* TO 'user'@'localhost';
Schritt 2 besteht darin, diesem Benutzer das Speichern einer Datei in einem bestimmten Ordner zu ermöglichen. Es gibt einige Möglichkeiten, dies zu tun, aber am Ende habe ich einen Ordner abgelegt:
/home/user/tmp/db
und
chown mysql:mysql /home/user/tmp/db
Dadurch kann der MySQL-Benutzer die Datei schreiben. Wie bereits in früheren Postern erwähnt, können Sie auch den temporären MySQL-Ordner verwenden. Ich nehme an, dass dies nicht wirklich wichtig ist, aber Sie möchten definitiv keine 0777-Berechtigung (weltweit beschreibbar) festlegen, es sei denn, Sie möchten, dass die Welt Ihre Daten sieht. Es gibt ein potenzielles Problem, wenn Sie den Vorgang spülen und wiederholen möchten, da dies INTO OUTFILE
nicht funktioniert, wenn die Datei vorhanden ist. Wenn Ihre Dateien einem anderen Benutzer gehören, unlink($file)
funktioniert der Versuch, dies zu tun, nicht. Wenn Sie wie ich sind (paranoid um 0777), können Sie Ihr Zielverzeichnis festlegen mit:
chmod($dir,0777)
also kurz vor dem SQL-Befehl
chmod($dir,0755)
unmittelbar danach, gefolgt von unlink(file)
Löschen der Datei. Auf diese Weise läuft alles unter Ihrem Webbenutzer und Sie müssen den MySQL-Benutzer nicht aufrufen.
FILE
ist das fürSELECT INTO OUTFILE
Anweisungen erforderliche Privileg nicht enthalten . Ich hatte mehrere Probleme mit dieser Nichtübereinstimmung zwischen Englisch und MySQL: dba.stackexchange.com/a/96894/53784