Какой файл и полномочия каталога требуются для MySQL LOAD DATA INFILE?

У меня есть сценарий, который пытается загрузить некоторые данные в MySQL с LOAD DATA INFILE. По некоторым причинам это работает, если файл находится в /tmp каталог, но не, если файл находится в другом каталоге с идентичными полномочиями. Я не могу найти способ заставить MySQL импортировать данные снаружи /tmp каталог или каталог базы данных, но я ничего не могу найти в руководстве, которое объясняет, почему это имело бы место.

Ситуация:

$ ls -l /
...
drwxrwxrwt  21 root root  4096 2010-10-19 20:02 tmp
drwxrwxrwt   2 root root  4096 2010-10-19 20:14 tmp2

$ ls -l /tmp/data.csv 
-rwxr-xr-x 1 timm timm 415431 2010-10-19 20:02 /tmp/data.csv

$ ls -l /tmp2/data.csv 
-rwxr-xr-x 1 timm timm 415431 2010-10-19 20:14 /tmp2/data.csv

AFAICT они идентичны в важных отношениях. Однако, если в командной строке MySQL я делаю:

> LOAD DATA INFILE '/tmp2/data.csv' IGNORE INTO TABLE ports
      FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY ' ';
ERROR 29 (HY000): File '/tmp2/data.csv' not found (Errcode: 13)

> LOAD DATA INFILE '/tmp/data.csv' IGNORE INTO TABLE ports 
      FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY ' ';
Query OK, 1 row affected, 1 warning (0.04 sec)
Records: 1  Deleted: 0  Skipped: 0  Warnings: 0

Я заключаю от регистраций форума, что errno 13 указывает на проблему разрешения. Это кажется этим /tmp рассматривается особенно MySQL, но почему? Самой близкой я могу приехать, является строка в ручном высказывании:

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

/tmp не находится в каталоге базы данных, но возможно его рассматривают, как будто это. Таким образом, как я должен настроить вещи для него для чтения файлов за пределами /tmp?

7
задан Tim Martin 19 October 2010 в 18:39
поделиться