Я столкнулся с той же проблемой и применил решения, описанные выше.
Прежде всего, моя тестовая среда выглядит следующим образом
- Ubuntu 14.04.3 64bit
- mysqlВерсия 14.14 Distrib 5.5.47, для debian-linux-gnu (x86_64) с использованием readline 6.3 (устанавливается просто командой 'sudo apt-get install ...')
Мои результаты тестирования
i) Решение AppArmor работает только для случаев / tmp.
ii) Следующее решение работает без решения AppArmor.Я хотел бы поблагодарить Авниша Мехту за его ответ.
$ mysql -u root -p --in-file=1
...
mysql> LOAD DATA LOCAL INFILE '/home/hongsoog/study/mysql/member.dat'
-> INTO TABLE member_table;
Важными тремя моментами являются
- запуск клиента mysql с параметром --in-file = 1
- используйте LOAD DATA LOCAL INFILE вместо LOAD DATA INFILE
проверьте, что все элементы пути имеют мировое разрешение на чтение из пути к файлу данных / to.Например, следующий подпуть должен быть читаемым для всех или читаемой группой mysql, если INFILE нацелен на '/home/hongsoog/study/mysql/memer.dat'
- / home
- /home / hongsoog
- / home / hongsoog / учеба / mysql
- / home / hongsoog / учеба / mysql / member.data
Когда вы запускаете клиент mysql БЕЗ опции «--in-file = 1» и используете
LOAD DATA LOCAL INFILE ...
, вы получите
ОШИБКА 1148 (42000): используемая команда не разрешена сэта версия MySQL
В итоге, опция "--in-file = 1" в команде клиента mysql и "LOAD DATA LOCAL INFILE ..." должны идти рука об руку.
Надеюсь на помощь всем.