mysqldump: Got error: 1: Can't create/write to file '/data/export/test.txt' (Errcode: 13)

问题

需要将数据已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来完成,所以因为没有权限,无法创建。

解决方案

  1. 修改/etc/apparmor.d/mysqld
    vim /etc/apparmor.d/mysqld

  2. 增加
    /data/export/** rw,

  3. 重新载入配置
    /etc/init.d/apparmor reload

  4. 再次导出即可。


Wait for your reward

这里写图片描述 这里写图片描述 这里写图片描述 这里写图片描述

你可能感兴趣的:(MySQL,Linux,Ubuntu)