Outfile は、mysql の独自の許可です。
ALL をお持ちの場合は含まれています。
ただし、SELECT、INSERT、UPDATE、DELETE、DROP、CREATE などの安全なコレクションしかなく、OUTFILE がない場合、「into outfile」はクエリで機能しません。
この理由は、MySQL 内からファイルにアクセスすることには、書き込み目的であっても、特定のセキュリティ リスクがあるためです。mysql からファイルにアクセスすると、mysql ユーザーがアクセスできる任意のファイルにアクセスできるため、ユーザーベースのファイル権限がバイパスされるためです。
これを回避するには、SQL の実行に使用しているシェル/言語の出力にクエリを直接実行できます。
これは* nixの例です
>$ echo "select count(predicate),subject from TableA group by subject" | mysql -u yourusername -p yourdatabasename > ~/XYZ/outputfile.txt
ただし、「\」を使用せずにすべてを 1 行で行うか、「\」を使用して改行をエスケープしてください。
ここで何が起こっているかというと、mysql クライアントに対してクエリを実行し、結果を吐き出してから、出力をファイルに送信しているということです。したがって、ファイルは mysql 内から呼び出されることはなく、mysql の実行後に呼び出されます。
したがって、mysql を使用して情報を取得し、データを自分のユーザー シェルからファイルにダンプすれば問題ありません。
または、どちらの方法でも、outfile mysql 許可を取得する方法を見つけてください。