首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于mySQL的文件系统写授权的不同

问基于mySQL的文件系统写授权的不同
EN

Database Administration用户
提问于 2014-05-09 06:29:31
回答 1查看 167关注 0票数 2

在本地mySQL (在CentOS 6 VM上)数据库上,我希望将一些数据从DB导出到如下文件:

代码语言:javascript
复制
SELECT html
FROM mytable
WHERE lang = 'en' and id='KEY01'
INTO OUTFILE 'key01_en.html'

通过这样做,文件将被保存在/var/lib/mysql/mydbschema/默认情况下。

现在,我希望将该文件保存在我的用户(例如/home/userone/dump_html文件夹)中。

如果我这样说(我从shell中启动mysql命令,并作为“userone”记录):

代码语言:javascript
复制
SELECT html
FROM mytable
WHERE lang = 'en' and id='KEY01'
INTO OUTFILE '/home/userone/dumphtml/key01_en.html'

它造成一个错误,即该进程没有足够的权限在其中写入。

但是现在仍然是从mysql>提示符,如果我做:

代码语言:javascript
复制
SELECT html
FROM mytable
WHERE lang = 'en' and id='KEY01'
INTO OUTFILE '/tmp/key01_en.html'
;

-- and then
system mv /tmp/key01_en.html /home/userone/dumphtml/key01_en.html
;

它的工作没有任何问题。

在我看来,奇怪的是,SQL不能在我的磁盘上写入,但是system命令可以。知道为什么吗?(从SO上的这个答案开始对这一点的讨论)

EN

回答 1

Database Administration用户

发布于 2014-12-07 22:15:29

您的问题是,如果不使用默认的rpm或其他安装包,MySQL就不能写入主目录,因为默认情况下它将作为MySQL用户运行,或者在安装和配置时作为您定义的其他用户运行。默认情况下,用户无法写入另一个用户的主目录,因为它是每个帐户的私有空间。

默认情况下,所有用户都可以写/tmp。因此,MySQL可以在那里写作。根据系统上的用户组和umask,您可能可以以用户身份读取该输出。

如果您不想使用/tmp,您可以创建另一个目录,您的用户和MySQL可以在其中编写并确保您的用户和MySQL是同一个组的成员。

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

https://dba.stackexchange.com/questions/64809

复制
相关文章

相似问题

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