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)
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,
-
GRANT ALL
не означаетGRANT FILE
-
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.