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)
SELECT
Berechtigungen. Als dieser Benutzer durchsuche ich oft die Datenbank.
FILE
die in den MySQL-Dokumenten beschriebenen Berechtigungen verfügt .
in
ist 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. Ihrgs
Benutzer muss auch dieFILE
Berechtigung mysql haben , um diese Abfrage tatsächlich auszuführen.