mysql的查询结果写入到某个文件,有两种方法
1)pager cat > /the/file/root
select * from dbname.table
2)select * from dbname.table into outfile '/the/file/root'
 
使用第二种方法时,报如下错误
select count(*) from bbs.test into outfile '/web/file.txt';
ERROR 1 (HY000): Can't create/write to file '/web/file.txt' (Errcode: 13)
上网查找相关的信息,说是selinux的问题,但是服务器上的selinux是已经关闭的,应该是权限的问题吧
 
按照网上查到的资料,有人写到/tmp目录下是可以的,试一下果然是ok的,猜想应该是权限的问题了,查看/web和/tmp目录权限的区别
drwxrwxrwt.   3 root root  4096  6月 29 03:15 tmp
drwxr-xr-x.   7 root root  4096  6月 29 15:07 web
两个目录的权限确实不一样,/tmp目录具有777的权限
在/web目录下新建一个tt的目录,并赋予777的权限
chown –R 777 /web/tt
再将mysql的查询结果输出到/web/tt/file.txt目录下
mysql> select count(*) from wp_test into outfile '/web/tt/file.txt';     
Query OK, 1 row affected (0.06 sec)
嗯,ok了
查看导出来的文件的权限
-rw-rw-rw-. 1 mysql mysql 5  6月 29 15:08 /web/tt/file.txt
因为select into outfile的命令是mysql的daemon来负责写文件操作的,需要对文件具有写的权限,而/web目录的权限为755,mysql不具有对文件写的权限,所以就报不能create/write了,而/tmp是777的权限,所以也就是为什么能够写入的原因