我正在处理写入输出文件的 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/