Похоже, у вашего admin
пользователя нет привилегии FILE . Вы можете дать разрешение, и оно будет работать.
GRANT FILE ON * . * TO 'admin'@'%';
SELECT ... INTO OUTFILE 'file_name' форма SELECT записывает
выделенные строки в файл. Файл создается на хосте сервера, поэтому
Вы должны иметь привилегию FILE, чтобы использовать этот синтаксис. имя_файла не может
быть существующим файлом, который, помимо прочего, предотвращает такие файлы как
/ etc / passwd и таблицы базы данных от уничтожения.
Системная переменная character_set_filesystem управляет интерпретацией
имени файла.
https://dev.mysql.com/doc/refman/8.0/en/select-into.html
=============================================== ==========
Также обратите внимание, что серверу mysql необходимо иметь разрешение на запись по указанному вами пути.
Привилегия FILE также позволяет пользователю создавать новые файлы в любом
каталог, в котором сервер MySQL имеет доступ для записи. Это включает в себя
каталог данных сервера, содержащий файлы, которые реализуют
таблицы привилегий.
Если вы выполняете запрос как:
SELECT * FROM selecteddb.mytable ..... INTO outfile "~/stats.csv";
Это попытается создать файл в домашнем каталоге. Если вы пропустите пути и оставите только имя файла, он будет создан в каталоге данных Mysql. (/var/lib/mysql
в моей машине с Ubuntu).
Так что это должно работать без проблем.
SELECT * FROM selecteddb.mytable ..... INTO outfile "stats.csv";
Надеюсь, это поможет!