Я пытаюсь вывести данные из таблицы MySQL в файл, но получаю ошибки разрешения:
$ 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>
Если соответствующий каталог chmodded 777, то почему пользователь MySQL не может записать файл? Интересно, что я тоже не могу писать в / tmp /.
РЕДАКТИРОВАТЬ: похоже, пользователь БД имеет соответствующие разрешения MySQL:
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
разрешения. Я часто просматриваю базу данных как этот пользователь.
FILE
привилегия, как описано в MySQL docs .
in
бессмысленно, если MySQL не может получить доступdotanchoen
. Другими словами, ящик безопасного депо в банковском хранилище можно оставить широко открытым, но если дверь банковского хранилища закрыта, вы не попадете в ящик. Вашgs
пользователь также должен иметьFILE
привилегию mysql для фактического выполнения этого запроса.