我在Ubuntu18.04上运行的程序在我的/home/tmp目录中执行一个select语句,但是mysql创建的所有文件都被锁定。我可以手动解锁它们,但是我们的程序需要在创建它们之后立即读取文件,所以我需要它们在创建时被解锁。
我已经将文件夹权限设置为777,但是任何新创建的文件都会被锁定。这些文件属于mysql服务器,没有“其他”用户的访问权限。我不能更改这些权限,因为它们不是我拥有的。
正在运行的mysql服务器为v8.0.18
在my.cnf中,我已经将secure_file_priv设置为这个/home/tmp文件夹路径。
我们在另一台计算机上使用mysql服务器5.7.27运行相同的程序,而且文件没有锁定在那里,所以我不知道问题出在哪里。
请帮帮我!谢谢。
编辑:澄清
发布于 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设置的权限,请尝试如下所示(在要写入转储的目录上):
sudo setfacl -m 'd:u:«YOUR-USER»:r' /home/tmp这将“默认”ACL设置为在/home/tmp中创建的任何文件上自动放置ACL,从而允许您的用户读取它们。如果你也需要给他们写信,你可以用rw代替。
https://unix.stackexchange.com/questions/555823
复制相似问题