Ich versuche, die Daten aus einer MySQL-Tabelle in eine Datei auszugeben, erhalte jedoch Berechtigungsfehler:
$ pwd
/home/dotancohen
$ mkdir in
$ chmod 777 in/
$ mysql -ugs -p
mysql> USE someDatabase;
mysql> SELECT * FROM data INTO OUTFILE '/home/dotancohen/in/data.csv';
ERROR 1045 (28000): Access denied for user 'gs'@'localhost' (using password: YES)
mysql>
Wenn das betreffende Verzeichnis auf 777 geändert wurde, warum kann der MySQL-Benutzer dann die Datei nicht schreiben? Interessanterweise kann ich auch nicht nach / tmp / schreiben.
BEARBEITEN: Es sieht so aus, als hätte der DB-Benutzer die richtigen MySQL-Berechtigungen:
mysql> show grants;
+----------------------------------------------------------------------------------+
| Grants for gs@localhost |
+----------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'gs'@'localhost' IDENTIFIED BY PASSWORD 'somePassword' |
| GRANT ALL PRIVILEGES ON `gs\_%`.* TO 'gs'@'localhost' |
+----------------------------------------------------------------------------------+
2 rows in set (0.01 sec)
SELECTBerechtigungen. Als dieser Benutzer durchsuche ich oft die Datenbank.
FILEdie in den MySQL-Dokumenten beschriebenen Berechtigungen verfügt .
inist sinnlos, wenn MySQL nicht darauf zugreifen kanndotanchoen. Mit anderen Worten, der Sicherheitspostkasten im Banktresor kann weit geöffnet bleiben, aber wenn die Tür des Banktresors verriegelt ist, gelangen Sie nicht in den Kasten. IhrgsBenutzer muss auch dieFILEBerechtigung mysql haben , um diese Abfrage tatsächlich auszuführen.