【问题标题】:Can't get load_file() working in mysql无法让 load_file() 在 mysql 中工作
【发布时间】:2014-11-24 14:46:42
【问题描述】:

为了让 load_file() 工作,我已经苦苦挣扎了 2 个晚上,但结果为 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 已执行,甚至拥有该目录
  • Mysql 欠文件
  • 数据库用户 = 根
  • 文件大小
  • secure-file-priv 已设置
  • 我没有运行 apparmor

如果不设置secure-file-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)

有什么想法吗?

【问题讨论】:

    标签: mysql mysql-loadfile


    【解决方案1】:

    典型的...发布到这里 2 天零 5 分钟后我发现了。

    要加载的文件,而不仅仅是它所在的文件夹必须执行...它的路径中的每个文件夹都必须执行到“/”!

    【讨论】:

    • 不能,必须等待 2 天 :)
    • 我在使用load_file() 加载文件时遇到了类似的问题。到目前为止,我已经尝试了您在问题中所做的一切。不幸的是,我不明白你对execute the path 的看法。你能给我一个如何执行路径的例子吗?
    猜你喜欢
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2016-11-21
    • 2011-07-07
    • 2014-05-15
    • 1970-01-01
    相关资源
    最近更新 更多