无法在mysql中使用load_file()

时间:2014-11-24 14:46:42

标签: mysql mysql-loadfile

我现在已经挣扎了两晚才能让load_file()工作,但结果是NULL。 我运行版本" 5.6.19-0ubuntu0.14.04.1"。

示例:

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已执行,甚至拥有dir
  • Mysql显示文件
  • DB user = root
  • 文件大小< max_allowed_pa​​ckets
  • 设置了secure-file-priv
  • 我没有运行apparmor

如果不设置secure-file-priv,它可以毫不费力地读取/ etc / passwd等非重要数据:P。也来自" /"我可以导入,但没有其他地方。 设置secure-file-priv时,我可以使用" /"只有!

相同文件,没有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 个答案:

答案 0 :(得分:1)

典型......在发布之后一直在寻找2天5分钟我想出来了。

要加载的文件,而不仅仅是它所在的文件夹必须执行...其中的每个文件夹都有" /"必须执行!