|
想将mysql中的表转换成CVS格式,执行了以下命令:
# mysqldump -uuser -ppass --no-create-info --tab=./ --fields-terminated-by=',' db
报错:
mysqldump: Got error: 1: Can't create/write to file '/data/table.txt' (Errcode: 13) when executing 'SELECT INTO OUTFILE'
查看了下syslog,看见以下记录:
May 11 13:02:47 dc kernel: [ 6060.919852] type=1400 audit(1336712567.042:52): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/mysqld" name="/data/table.txt" pid=2191 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=115 ouid=115
请求被apparmor拒绝的信息赫然在目,于是去看看apparmor的黑名单:
# aa-status
...
/user/sbin/mysqld
... (好吧,其实这步可以省过,系统日志已经告诉我mysql被apparmor给列入名单了。。。)
既然如此,那就去修改一下apparmor对mysql的读写限制,把想要存放备份数据的目录加进去:
# vi /etc/apparmor.d/usr.sbin.mysqld
/usr/sbin/mysqld{
...
...
/data r,
/data/* rw,(别忘了每条记录后面的逗号)
}
改完以后重新载入一下配置文件:
/etc/init.d/apparmor reload
再去执行mysqldump,可能还会报错,那主要是这个目录的读写权限问题,你可以把mysql用户加入到这个目录的组里面,然后把这个目录改成775的权限,这样子mysql才能将数据写入文本文件。
关于apparmor,传送门一个,自己看看吧:
http://baike.baidu.com/view/1188790.htm |
|
|