问题
需要将数据已csv格式导出到/data/export/路径下,遇到问题:
mysqldump: Got error: 1: Can’t create/write to file ‘/data/export/test.txt’ (Errcode: 13) when executing ‘SELECT INTO OUTFILE’
分析
环境
OS: Ubuntu 14.04 LTS
MySQL: 5.6.x #datadir=/data/mysql
通过mysqldump -T 导出的数据是两个文件,数据表结构我test.sql,数据文件为test.txt。导出过程中,test.sql创建成功了,但是test.txt文件提示不能写入,实际也没有创建。
于是,检查权限,将/data/export修改为mysql:mysql还是报错。
这是因为ubuntu安全机制的原故。apparmor对于mysqld默认没有配置路径/data/export/的访问权限。这个导出,test.sql是mysqldump来完成的,成功创建,但是,test.txt是通过mysqld的select into outfile来完成,所以因为没有权限,无法创建。
解决方案
修改/etc/apparmor.d/mysqld
vim /etc/apparmor.d/mysqld增加
/data/export/** rw,重新载入配置
/etc/init.d/apparmor reload再次导出即可。
Wait for your reward