Outfile 是 mysql 自己的权限。
如果你有 ALL 它包括在内。
但是,如果您只有一个安全的集合,例如 SELECT、INSERT、UPDATE、DELETE、DROP、CREATE,但没有 OUTFILE,则“into outfile”在查询中将不起作用。
这样做的原因是,从 MySQL 内部访问文件,即使是出于写入目的,也存在一定的安全风险,因为如果从 mysql 访问文件,则可以访问 mysql 用户有权访问的任何文件,从而绕过基于用户的文件权限。
为了解决这个问题,您可以将查询直接运行到您用来运行 sql 的任何 shell/语言的输出中。
这是一个 *nix 示例
>$ echo "select count(predicate),subject from TableA group by subject" | mysql -u yourusername -p yourdatabasename > ~/XYZ/outputfile.txt
但是在没有“\”的情况下在一行上完成所有操作,或者使用“\”来转义换行符。
这里发生的情况是,您正在向 mysql 客户端运行查询并且它正在吐出结果,然后您将输出定向到文件。所以这个文件永远不会从 mysql 中调用,它是在 mysql 运行后调用的。
因此,使用 mysql 获取信息,然后将数据从您自己的用户 shell 转储到文件中,您会没事的。
或者找到一种方法让自己获得 outfile mysql 权限,无论哪种方式。