linux mysql outfile_mysql – SELECT INTO OUTFILE权限被拒绝但用户可以写入该目录

我有一个问题,试图使用SELECT INTO OUTFILE并使用/ tmp以外的目录.

我的Linux用户名为datam,我的MySQL用户是lea,MySQL运行为mysql.

当datam运行mysql -u lea数据库并尝试使用/home/datam/xfers/online/file.csv路径执行SELECT INTO OUTFILE时,我收到错误代码13,权限被拒绝.使用/tmp/file.csv是有效的,所以我相信它不是MySQL中的权限问题.

我已经将mysql添加到datam组并通过以下方式验证了这一点:

~$sudo id mysql

uid=106(mysql) gid=114(mysql) groups=114(mysql),1001(datam)

我有/ home / datam /递归设置为775.

如果我做sudo -u mysql / bin / bash并转到/ home / datam / xfers / online /并执行触摸文件则会写入文件.

我需要做什么才能让mysql从SELECT INTO OUTFILE写一个文件?

我认为这不是围绕这个主题的其他问题的重复,因为我已经查看了它们并遵循了所有指令(在所有目录上设置执行,直到我想要的那个,设置GRANT FILE ON等).

MySQL用户lea授予:

+-----------------------------------------------------------------------------------------------------------+

| Grants for lea@localhost |

+-----------------------------------------------------------------------------------------------------------+

| GRANT FILE ON *.* TO 'lea'@'localhost' IDENTIFIED BY PASSWORD '*9BB439A3A652A9DAD3718215F77A7AA06108A267' |

| GRANT ALL PRIVILEGES ON `database`.* TO 'lea'@'localhost' |

+-----------------------------------------------------------------------------------------------------------+

解决方法:

这可能是由mysql用户权限引起的.

要为自己提供FILE权限,请执行以下操作:

> service mysql restart –skip-networking –skip-grant-tables

> mysql< hit enter>

> UPDATE mysql.user SET File_priv =’Y’WHERE user =’lea’AND host =’localhost’;

>退出

>服务mysql重启

linux用户可以写一个文件.但apparmor可能会阻止mysql服务.

检查此文件:/etc/apparmor.d/usr.sbin.mysqld.

在那里添加项目文件夹:

/usr/sbin/mysqld {

[...]

/home/datam/xfers/online/ r,

/home/datam/xfers/online/* rw

[...]

}

最后,做一个

sudo /etc/init.d/apparmor reload

标签:mysql,linux,permissions

来源: https://codeday.me/bug/20190528/1170429.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值