2014-11-24 2 views
3

Я боролся в течение 2 ночей, чтобы загрузить load_file(), но результаты NULL. Я запускаю версию «5.6.19-0ubuntu0.14.04.1».Не могу получить load_file(), работающий в mysql

Пример:

mysql> show variables like '%secure%'; 
+------------------+-------------+ 
| Variable_name | Value  | 
+------------------+-------------+ 
| secure_auth  | ON   | 
| secure_file_priv | /root/load/ | 
+------------------+-------------+ 
mysql> show variables like 'max_allowed%'; 
+--------------------+----------+ 
| Variable_name  | Value | 
+--------------------+----------+ 
| max_allowed_packet | 16777216 | 
+--------------------+----------+ 

mysql> desc xmlDocs; 
+-------------+-------------+------+-----+---------+-------+ 
| Field  | Type  | Null | Key | Default | Extra | 
+-------------+-------------+------+-----+---------+-------+ 
| fileName | varchar(30) | NO | PRI | NULL |  | 
| server  | varchar(20) | NO |  | NULL |  | 
| doc_content | blob  | NO |  | NULL |  | 
+-------------+-------------+------+-----+---------+-------+ 

mysql> insert into xmlDocs values ('test','test',load_file('/root/load/test.xml')); 
ERROR 1048 (23000): Column 'doc_content' cannot be null 

Права доступа к файлу:

drwxrwxr-x 5 mysql mysql 4096 Nov 24 08:18 . 
drwx------ 6 root root 4096 Nov 24 08:33 .. 
drwxr--r-- 5 root root 4096 Nov 22 16:24 EU1 
drwxr--r-- 5 root root 4096 Nov 22 16:26 server 
-rwxrwxrwx 1 mysql mysql 83440 Nov 24 08:18 test.xml 
drwxr--r-- 5 root root 4096 Nov 22 16:24 US1 

Проверено:

  • MySql имеет выполнить и даже владеет реж
  • Mysql РМО файл
  • DB пользователя = корень
  • Размер файл < max_allowed_packets
  • безопасных-файл-собства установлено
  • У меня нет AppArmor работает

Без установки защищенного-файл-Priv он может читать удобства важных данных, такие как/etc/passwd легко: P. Также из «/» я могу импортировать, но нигде больше. При настройке файла secure-file-priv я могу заставить его работать только с «/»!

же файл, не безопасно-файлов собств набор:

mysql> insert into xmlDocs values ('test','test',load_file("/root/load/test.xml")); 
ERROR 1048 (23000): Column 'doc_content' cannot be null 
mysql> insert into xmlDocs values ('test','test',load_file("/etc/test.xml")); 
Query OK, 1 row affected (0.00 sec) 

Любые идеи?

ответ

1

Типичный ... искал 2 дня и 5 минут после публикации его здесь, я понял это.

Загружаемый файл, а не только папка, в которой он находится, должен быть выполнен ... КАЖДАЯ папка на пути к «/» должна быть выполнена!

+0

Вы должны отметить это как принято .. :) –

+0

Не могу, должен ждать 2 дня :) – MarlonB

+0

Перед тем, как загрузить файл с помощью 'load_file()', я столкнулся с аналогичной проблемой. Я пробовал все до сих пор, что вы делали в вас вопрос. К сожалению, я не понял, что вы сказали о 'execute the path'. Не могли бы вы привести пример, как выполнить путь? – seal

Смежные вопросы