mysql - 如何让 MySQL 以不同的用户身份写入输出文件?

标签 mysql sql into-outfile

我正在处理写入输出文件的 MySQL 查询。我每隔一两天运行一次此查询,因此我希望能够删除输出文件,而不必求助于 su 或 sudo。我能想到的唯一方法是让输出文件由 mysql 用户以外的人拥有。这可能吗?

编辑:我没有将输出重定向到文件,我正在使用选择查询的 INTO OUTFILE 部分输出到文件。

如果有帮助:

mysql --version
mysql  Ver 14.12 Distrib 5.0.32, for pc-linux-gnu (x86_64) using readline 5.2

最佳答案

输出文件是由 mysqld 进程创建的,而不是由您的客户端进程创建的。因此输出文件必须属于mysqld进程的uid和gid。

如果您从可以访问该文件的 uid 或 gid 下的进程访问它,则可以避免必须 sudo 来访问该文件。换句话说,如果 mysqld 创建由 uid 和 gid "mysql"/"mysql"拥有的文件,则将你自己的帐户添加到组 "mysql"。那么您应该能够访问该文件,前提是该文件的权限模式包括组访问权限。

编辑:

您正在删除/tmp 中的文件,目录权限模式为 rwxrwxrwt。粘性位 ('') 意味着只有当您的 uid 与文件的所有者相同时,您才能删除文件,而不管文件或目录的权限如何。

如果您将输出文件保存在另一个未设置粘滞位的目录中,您应该能够正常删除该文件。

阅读 sticky(8) 的手册页摘录:

粘性目录

设置了“sticky bit”的目录成为仅追加目录,或者更准确地说,是限制删除文件的目录。粘性目录中的文件只有在用户对目录具有写权限并且用户是文件所有者、目录所有者或 super 用户时才能被删除或重命名。此功能适用于必须公开可写但应拒绝用户任意删除或重命名彼此文件的许可的/tmp 等目录。

关于mysql - 如何让 MySQL 以不同的用户身份写入输出文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/231862/

相关文章:

mysql - 搜索时%通配符如何在sql中准确工作

mysql - 一一显示具有重复 StudentId 的验证消息

mysql 选择到 outfile 文本文件选项卡以换行符分隔

MySQLdump 与 WINDOWS10 : OS errno 13 - (Permission denied) when executing 'SELECT INTO OUTFILE'

php - 如何使用SELECT INTO OUTFILE写入/tmp以外的目录?

javascript - Javascript 代码中的这个 If 条件有什么问题吗?

sql - MySQL:如何按列按升序排序,并在末尾显示 NULL 而不是开头?

mysql - 如何获取Keycloak访问 token 并将其存储在数据库中以供Spring Boot使用?

PHP:从 MySQL 中的内爆数组中选择一个值

mysql - 增加 varchar 长度会减少 MySQL 的大小吗?