Mysql INTO OUTFILE /home

sda

Новичок
Всем привет, столкнулся с такой проблемой. Нужно именно таким способом создать файл с данными из таблицы mysql. Все делается на домашнем компьютере, с gnu/linux ubuntu. Выполняю в mysql запрос

SQL:
SELECT * FROM table INTO OUTFILE '/home/user/file'
Получаю ошибку

Can't create/write to file '/home/user/file' (Errcode: 13)
Понимаю, что он не может записать/создать файл, но права на /user и даже на /home выставлены следующие

drwxrwxrwx 9 root root 4096 июля 24 13:57 home
drwxrwxrwx 9 user user 4096 июля 24 13:57 user
Но это не помогает, mysql работает под пользователем mysql, пробовал для этих папок менять владельца/группу на mysql, все равно не помогает, при этом без проблем файл создается в /tmp, она имеет следующие права

drwxrwxrwt 16 root root 16384 июля 24 15:27 tmp
или если указать относительный путь, то в папке базы данных, по адресу /var/lib/mysql/db тоже файл создается без проблем, а вот если я хочу его сохранить в домашнюю папку пользователя или куда-нибудь в другое место, например в /var/www то не получается, mysql отвечает ошибкой указанной выше, всем папкам я ставил права 777 и назначал пользователя/группу mysql, это не решает проблемы. Кто сталкивался ? может нужно что-то править в my.cnf ? Заранее спасибо, за возможную помощь.

ps ОС Ubuntu 12.10, mysql Ver 14.14 Distrib 5.5.31
 

sda

Новичок
почитал англоязычные ресурсы и нашел следующее объяснение и решение.

Какая это именно версия Ubuntu и это выпуск Ubuntu Server ?

Недавние релизы Ubuntu Server (такие как 10.04) поставляются с AppArmor и MySQL профиль по-умолчанию, мог быть запущен в режиме обеспечения безопасности. Вы можете это проверить, выполнив команду sudo aa-status примерно так:

# sudo aa-status
5 profiles are loaded.
5 profiles are in enforce mode.
/usr/lib/connman/scripts/dhclient-script
/sbin/dhclient3
/usr/sbin/tcpdump
/usr/lib/NetworkManager/nm-dhcp-client.action
/usr/sbin/mysqld
0 profiles are in complain mode.
1 processes have profiles defined.
1 processes are in enforce mode :
/usr/sbin/mysqld (1089)
0 processes are in complain mode.

Если mysqld включен в режиме безопасности, тогда это вероятно единственная причина отказа в записи. Сообщения также будут записаны в /var/log/messages, когда AppArmor блокирует запись/доступ. Вы можете изменить /etc/apparmor.d/usr.sbin.mysqld и добавить /data/ и /data/* чуть ниже, примерно таким образом:

...
/usr/sbin/mysqld {
...
/var/log/mysql/ r,
/var/log/mysql/* rw,
/var/run/mysqld/mysqld.pid w,
/var/run/mysqld/mysqld.sock w,
/data/ r,
/data/* rw,
}

И перезапустить AppArmor
# sudo /etc/init.d/apparmor reload

ПРЕДУПРЕЖДЕНИЕ: Изменения выше позволят MySQL читать и записывать директорию /data. Мы надеемя, вы уже осознаете последствия этого для безопасности.
Правда логи AppArmor у меня пишутся в системный журнал, /var/log/syslog (Ubuntu 12.10)

Взято здесь. Пусть теперь будет и в рунете ответ.
 
Сверху