您不能仅在单个数据库上授予FILE特权。从逻辑上讲这没有任何意义。考虑一下文档怎么说:
FILE特权授予您使用LOAD DATA INFILE和SELECT … INTO
OUTFILe语句以及LOAD_FILE()函数在服务器主机上读写文件的权限。具有FILE特权的用户可以读取服务器主机上世界上可读的或MySQL服务器可读的任何文件。(这意味着用户可以读取任何数据库目录中的任何文件,因为服务器可以访问任何这些文件。)
因此,FILE特权是 全局 特权。它会影响服务器上的所有文件,并且仅允许访问全局命令(例如
LOAD DATAINFILE等等),而不能访问任何数据库。授予FILE特权的唯一方法是使用以下语法在所有数据库上:
GRANT FILE ON *.* TO 'john'@'localhost';



