Ответ 1
Вы не можете предоставлять привилегии FILE только для одной базы данных. Это логически не имеет никакого смысла. Посмотрите, что документы говорят:
Признак FILE дает вам право на чтение и запись файлов на сервер с использованием команды LOAD DATA INFILE и SELECT... INTO OUTFILE и функцию LOAD_FILE(). Пользователь, у которого есть ФАЙЛ привилегия может читать любой файл на хосте сервера, который либо читаемый или читаемый на сервере MySQL. (Это означает, что пользователь может читать любой файл в любом каталоге базы данных, поскольку сервер может доступ к любому из этих файлов.)
Таким образом, привилегия FILE является глобальной привилегией. Он затрагивает все файлы на сервере и разрешает доступ только к глобальным командам (например, LOAD DATA INFILE
и т.д.), А не к какой-либо базе данных. Единственный способ предоставить права FILE - это все базы данных, используя этот синтаксис:
GRANT FILE ON *.* TO 'john'@'localhost';