当前位置:  开发笔记 > 后端 > 正文

如何让MySQL作为不同的用户编写outfiles?

如何解决《如何让MySQL作为不同的用户编写outfiles?》经验,为你挑选了2个好方法。

我正在使用写入outfile的MySQL查询.我每天或每两天运行一次这样的查询,所以我希望能够删除outfile而不必诉诸su或sudo.我能想到实现这一目标的唯一方法是将outfile编写为由mysql用户以外的其他人所拥有.这可能吗?

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

如果它有帮助:

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



1> Bill Karwin..:

输出文件由mysqld进程创建,而不是由客户端进程创建.因此,输出文件必须由mysqld进程的uid和gid拥有.

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

编辑:

您正在删除/ tmp中的文件,其目录权限模式为rwxrwxrwt.粘滞位('t')表示只有当您的uid与文件所有者相同时才能删除文件,无论文件或目录的权限如何.

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

请阅读粘性手册(8)的摘录:

STICKY DIRECTORIES

设置了"粘滞位"的目录将成为仅附加目录,或者更准确地说,是限制文件删除的目录.如果用户具有该目录的写权限并且该用户是该文件的所有者,该目录的所有者或超级用户,则只有用户可以删除或重命名粘性目录中的文件.此功能非常适用于/ tmp等目录,这些目录必须是可公开写入的,但应拒绝用户任意删除或重命名彼此文件的许可.



2> Draemon..:

没有使用"SELECT ... INTO OUTFILE"语法,没有.

您需要以另一个用户身份运行查询(即客户端),并重定向输出.例如,编辑crontab以在需要时运行以下命令:

mysql db_schema -e 'SELECT col,... FROM table' > /tmp/outfile.txt

这将创建/tmp/outfile.txt作为您已添加命令的crontab的用户.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有