Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: INTO OUTFILE /home
Форумы портала PHP.SU » Серверное администрирование » Администрирование БД » INTO OUTFILE /home

Страниц (1): [1]
 

1. Santehnick - 24 Июля, 2013 - 12:43:46 - перейти к сообщению
Всем привет, столкнулся с такой проблемой. Нужно именно таким способом создать файл с данными из таблицы mysql. Все делается на домашнем компьютере, с gnu/linux ubuntu. Выполняю в mysql запрос

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT * FROM TABLE INTO OUTFILE '/home/user/file'
  3.  


Получаю ошибку

Цитата:

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
2. Santehnick - 25 Июля, 2013 - 10:57:21 - перейти к сообщению
почитал англоязычные ресурсы и нашел следующее объяснение и решение.

Цитата:

Какая это именно версия 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/dhclien t-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)

Взято здесь[dot] Пусть теперь будет и в рунете ответ.

 

Powered by ExBB FM 1.0 RC1