MYSQL в outfile "доступ запрещен" - но у моего пользователя есть доступ" все".. и папка CHMOD 777



какие идеи?



SELECT * INTO OUTFILE '/home/myacnt/docs/mysqlCSVtest.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '*'
LINES TERMINATED BY 'n'
FROM tbl_property
WHERE managerGroupID = {$managerGroupID}


ошибка:



Access denied for user 'asdfsdf'@'localhost' (using password: YES)
490   4  

4 ответов:

попробуйте выполнить эту команду SQL:

> grant all privileges 
  on YOUR_DATABASE.* 
  to 'asdfsdf'@'localhost' 
  identified by 'your_password';
> flush privileges; 

кажется, что у вас возникли проблемы с подключением к базе данных и не писать в папку, которую вы упоминаете.

кроме того, убедитесь, что вы предоставили FILE для пользователей 'asdfsdf'@'localhost'.

> GRANT FILE ON *.* TO 'asdfsdf'@'localhost';

честно говоря, я не потрудился разобраться с грантами, и это сработало даже без привилегий:

echo "select * from employee" | mysql --host=HOST --port=PORT --user=UserName --password=Password DATABASE.SCHEMA > output.txt

как говорит @fijaaron,

  1. GRANT ALL не означает GRANT FILE
  2. GRANT FILE работает только с *.*

так что

GRANT FILE ON *.* TO user;

поскольку 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 temp, я не думаю, что это действительно так имеет значение, но вы определенно не хотите делать это разрешение 0777 (world-writeable), если вы не хотите, чтобы мир видел ваши данные. Существует потенциальная проблема, если вы хотите промыть-повторите процесс как INTO OUTFILE не будет работать, если файл существует. Если ваши файлы принадлежат другому пользователю, то просто пытается unlink($file) не работает. Если вы похожи на меня (параноик о 0777), то вы можете установить свой целевой каталог с помощью:

chmod($dir,0777)

непосредственно перед выполнением команды SQL, тогда

chmod($dir,0755)

сразу после этого, а затем unlink(file) для удаления файла. Это держит все это работает под вашим веб-пользователем и нет необходимости вызывать пользователя mysql.

Comments

    Ничего не найдено.