首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL选择到外部文件被锁定

MySQL选择到外部文件被锁定
EN

Unix & Linux用户
提问于 2019-12-05 21:58:19
回答 1查看 945关注 0票数 1

我在Ubuntu18.04上运行的程序在我的/home/tmp目录中执行一个select语句,但是mysql创建的所有文件都被锁定。我可以手动解锁它们,但是我们的程序需要在创建它们之后立即读取文件,所以我需要它们在创建时被解锁。

我已经将文件夹权限设置为777,但是任何新创建的文件都会被锁定。这些文件属于mysql服务器,没有“其他”用户的访问权限。我不能更改这些权限,因为它们不是我拥有的。

正在运行的mysql服务器为v8.0.18

在my.cnf中,我已经将secure_file_priv设置为这个/home/tmp文件夹路径。

我们在另一台计算机上使用mysql服务器5.7.27运行相同的程序,而且文件没有锁定在那里,所以我不知道问题出在哪里。

请帮帮我!谢谢。

编辑:澄清

  • 我所说的“锁定”是指文件在文件中查看时,图标上有一个挂锁符号。
  • 当我试图打开文件时收到的错误消息是“访问"/home/tmp/filename”被拒绝了。
  • 我的select语句类似于“SELECT * INTO”/home/tmp/file.csv‘字段终止于’',‘行’‘行以'\n’从设备结束“
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-12-05 22:23:42

您已经从MySQL文档(参见https://dev.mysql.com/doc/refman/8.0/en/select-into.html)中运行了这个注释:

从MySQL 8.0.17开始,文件创建的umask为0640;您必须有足够的访问权限来操作文件内容。在MySQL 8.0.17之前,umask为0666,该文件可由服务器主机上的所有用户写入。

因此,这些文件只可读到MySQL正在运行的任何组。您可以将用户添加到该组中,但这可能会提供超出所需的访问权限(例如,直接访问数据库数据文件)。

另一个选项是,如果您的文件系统支持ACL (大多数支持ACL),则查看默认ACL是否会覆盖MySQL设置的权限,请尝试如下所示(在要写入转储的目录上):

代码语言:javascript
复制
sudo setfacl -m 'd:u:«YOUR-USER»:r' /home/tmp

这将“默认”ACL设置为在/home/tmp中创建的任何文件上自动放置ACL,从而允许您的用户读取它们。如果你也需要给他们写信,你可以用rw代替。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/555823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档