当前位置: 首页 > 知识库问答 >
问题:

无法让load_file()在mysql中工作

罗华翰
2023-03-14

我已经挣扎了两个晚上,现在让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已经执行并拥有目录
  • Mysql下载文件
  • DB user=root
  • 文件大小

无需设置secure file priv,它就可以轻松读取/etc/passwd等不重要的数据:P.也可以从“/”导入,但其他任何地方都无法导入。当设置安全文件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个答案

吴松
2023-03-14

典型的在这里发布后,我已经找了2天零5分钟,我找到了答案。

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

 类似资料:
  • 问题内容: 好的,所以我下载了Go 1.1,并将其放入$ HOME / Documents / go。 然后,我将我修改为: 比起我,我已经尝试了: 但是我无法编译或安装任何依赖项。例如。我尝试运行我的小测试程序: 当我尝试安装依赖项时: 它可以在Mac上编译并正常工作。如果我尝试删除配置或什么都行不通,并且我不知道将它们设置为什么,除了Go的路径,我无法弄清楚我的配置有什么问题。 编辑:我的Ma

  • 问题内容: 我想让SQL LOAD_FILE 函数正常工作,并且已经阅读了有关此问题的每个问题/解答+文档,但是这是正在发生的事情。 当我想从主目录 加载LOAD_FILE时 : 因此,在获得此信息之后,我认为可能是MySQL无法访问我的主目录。我尝试运行此程序,效果很好: 然后也很好。 所以我说了,这是一个文件/文件夹读取/所有权许可问题。因此,我将文件移至/ etc / mysql /中,但仍

  • 问题内容: 我正在尝试将xml文件的目录作为blob加载到数据库表中。每行将包含一个对应的Blob文件。通过python脚本将文件加载到表中时,值将插入为null。在mysql命令行中运行等效命令时,也是如此。 有一次,我可以在将一些文件夹权限更改为mysql后插入值,但是由于需要脚本权限,我不得不修改目录/ var / lib / mysql / foo的所有权,因此值被重新插入为null,有效

  • 我试图将xml文件目录作为blob加载到数据库表中。每一行将包含一个对应的blob文件。当通过python脚本将文件加载到表中时,值被插入为null。在mysql命令行中运行等效命令时也是如此。 在将一些文件夹权限更改为mysql后,我一度能够插入值,但由于需要脚本权限,我不得不修改目录/var/lib/mysql/foo的所有权,因此值被重新插入为null,这实际上破坏了我编写的脚本。我记不起这

  • 我在Eclipse Juno中尝试了GlassFish 4.0和3.1决赛 你知道我该怎么做吗? 编辑:我在我朋友的电脑上尝试了同样的设置,它可以工作,但我需要这个!我得到了这些错误: 区块报价SEVERE:SEC5054:证书已过期: 严重:部署应用程序[__admingui]时出现异常

  • 所以我不知道如何让桌子在雪花中旋转。我试图在这里为帮助页面建模https://docs.snowflake.com/en/sql-reference/constructs/pivot.html。 枢轴输出 sql文本: