Ответ 1
Outfile - это собственное разрешение в mysql.
Если у вас ВСЕ, оно включено.
Но если у вас просто есть безопасная коллекция, такая как SELECT, INSERT, UPDATE, DELETE, DROP, CREATE, но не OUTFILE, "в outfile" не будет работать в запросах.
Причиной этого является то, что доступ к файлам из MySQL, даже для целей записи, имеет определенные угрозы безопасности, потому что, если вы обращаетесь к файлу из mysql, вы можете получить доступ к любому файлу, к которому имеет доступ пользователь mysql, тем самым в обход пользовательских разрешения файлов.
Чтобы обойти это, вы можете запустить свой запрос непосредственно в вывод какой-либо оболочки/языка, который вы используете для запуска sql.
Вот пример * nix
>$ echo "select count(predicate),subject from TableA group by subject" | mysql -u yourusername -p yourdatabasename > ~/XYZ/outputfile.txt
Но делайте все это на одной строке без "\" или используйте "\", чтобы избежать разрыва строки.
Что здесь происходит, так это то, что вы запускаете запрос в mysql-клиент и выплевываете результат, тогда вы направляете вывод в файл. Таким образом, файл никогда не вызывается из mysql, он вызывается после запуска mysql.
Итак, используйте mysql для получения информации, а THEN выгрузите данные в файл из вашей собственной пользовательской оболочки, и все будет в порядке.
Или найдите способ получить внешнее mysql-разрешение в любом случае.