По мотивам моих вчерашних изысканий. Понадобилось сделать новую виртуалку на Amazon. Данные было решено хранить на отдельном EBS-разделе, чтобы предотвратить их потерю в случае отключения виртуалки и для бекапов через снепшоты. В качестве OS была выбрана Ubuntu Server 12.04 LTS. Что в итоге привело к небольшим сложностям при изменении директории с базами MySQL. В большинстве остальных Linux-дистрибутивов рецепт приблизительно следующий:
- Копируем старую директорию MySQL в нужное место (в моем случае это отдельный раздел)
- Меняем владельца новой директории ‘chown -R mysql:mysql newmysqldir’
- Меняем путь к директории с данными в конфиге MySQL — my.cnf
- Перезапускаем mysqld
Однако, на Ubuntu Server после выполнения этих шагов MySQL отказался стартовать и сыпал в dmsg сообщениями вида:
[26176757.175845] type=1400 audit(1358635795.168:93): apparmor="DENIED" operation="open" parent=1 profile="/usr/sbin/mysqld" name="/www-data/mysql/ibdata1" pid=7994 comm="mysqld" requested_mask="rw" denied_mask="rw" fsuid=106 ouid=106
Проблема заключается в AppArmor, который блокирует доступ для mysqld к новой директории. Решение простое:
- Редактируем конфиг /etc/apparmor.d/usr.sbin.mysqld
- Дописываем строчки вида:
/www-data/mysql/ r,
/www-data/** rwk, - Перезапускаем AppArmor
- Перезапускаем mysqld
Вуаля, все работает