赞
踩
SELECT * FROM t1_videos INTO OUTFILE '/home/xuyue/record/test.txt';
今天在CentOS使用select……into outfile命令从MySQL数据库导出文本文件时报错如下:
[Err] 1 - Can't create/write to file '/home/xuyue/test.txt' (Errcode: 13 - Permission denied)
提示没有权限向该目录写入文件,于是修改该目录的权限如下(需要将上级目录均修改权限):
[root@strong3 home]# chmod -R 777 /home/xuyue
修改之后重新运行mysql语句还是报相同的错误,经过一番查询之后发现:CentOS系统中必须将目录修改为mysql用户组才能实现文件写入,于是继续修改该目录的用户组权限如下:
[root@strong3 home]# chown mysql.mysql /home/xuyue/record
修改之后重新执行mysql语句,依然报错,有点崩溃,又经过一番挣扎之后,发现:在redhat系列的linux中selinux对哪些daemon可以进行怎么样的操作是有限制的,mysql的select into outfile的命令是mysql的daemon来负责写文件操作的,写文件之前当然要具有写文件的权限,但同时selinux对这个权限做了限制,如果 selinux是关闭的,这个命令执行是没有问题的。
所以,我们还需将selinux关闭。
查看selinux状态:
[root@dev-server ~]# getenforce
Disabled
[root@dev-server ~]# /usr/sbin/sestatus -v
SELinux status: disabled
临时关闭:
##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
setenforce 0
永久关闭:
- vi /etc/selinux/config
- ##将SELINUX=enforcing改为SELINUX=disabled, 然后重启生效
至此,数据便可以正常导出了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。