Оскільки 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.
FILE
привілеї, необхідні дляSELECT INTO OUTFILE
виписок. У мене було кілька проблем з цією невідповідністю англійської мови та MySQL: dba.stackexchange.com/a/96894/53784