問題
需要將數據已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