Так как cP / WHM убрал возможность изменять привилегии пользователя как root в PHPMyAdmin, вы должны использовать командную строку для:
mysql> GRANT FILE ON *.* TO 'user'@'localhost';
. Шаг 2 - разрешить этому пользователю выгружать файл в определенной папке. Есть несколько способов сделать это, но я положил папку в:
/home/user/tmp/db
и
chown mysql:mysql /home/user/tmp/db
Это позволяет пользователю mysql записывать файл. Как уже отмечали предыдущие плакаты, вы также можете использовать временную папку MySQL, я не думаю, что это действительно важно, но вы определенно не хотите, чтобы это разрешение 0777 (доступно для записи в мире), если вы не хотите, чтобы мир видел ваши данные. Существует потенциальная проблема, если вы хотите промыть-повторить процесс, поскольку INTO OUTFILE
не будет работать, если файл существует. Если ваши файлы принадлежат другому пользователю, тогда просто попытка unlink($file)
не будет работать. Если вы похожи на меня (параноик около 0777), вы можете установить целевой каталог, используя:
chmod($dir,0777)
непосредственно перед выполнением команды SQL, затем
chmod($dir,0755)
немедленно после чего следует unlink(file)
, чтобы удалить файл. Это заставляет его работать под вашим веб-пользователем и не нужно вызывать пользователя mysql.