Назад | Перейти на главную страницу

Как изменить каталог данных MySQL?

Я хочу разместить свои базы данных в другом каталоге, чтобы хранить их в ESB (эластичное блочное хранилище, просто причудливое имя для виртуализированного жесткого диска) вместе с моими веб-приложениями и другими постоянными данными.

Я попытался пройти обучение по адресу http://crashmag.net/change-the-default-mysql-data-directory-with-selinux-enabled.

Кажется, все в порядке, пока я не наберу эту команду:

# semanage fcontext -a -t mysqld_db_t "/srv/mysql(/.*)?"

Затем команда терпит неудачу и сообщает мне, что mysqld_db_t является недопустимым контекстом SELinux, даже если каталог данных MySQL по умолчанию помечен этим контекстом. Я использую Fedora 15 на Virtualbox (ведет себя как обычный x86-совместимый компьютер) и Amazon EC2 (на основе Xen), поэтому учебник должен быть совместимым.

Также стоит упомянуть, что отключение SELinux глобально или только для процесса MySQL не является вариантом, потому что такое решение снизит безопасность системы, если хакер получит доступ к системе через сервер MySQL. Я никогда не видел этой проблемы до того, как перешел на архитектуру Redhat / Fedora, так что это может быть проблема, связанная с дистрибутивом.

Любая помощь высоко ценится

Вы пробовали указать полное имя контекста, а не только часть * _t?

Есть ли причина, по которой вы не можете смонтировать свое блочное устройство в / var / lib / mysql, чтобы вам не нужно было обновлять маркировку? Может быть, используя привязку или символические ссылки? например, mount -o bind / srv / mysql / var / lib / mysql.

Я попытался воспроизвести это поведение и не смог, вот что я сделал.

$ sudo semanage fcontext -a -t mysqld_db_t "/mnt/foo(/.*)?"
$ sudo restorecon -R /mnt/foo
$ ls -Z /mnt/foo/
drwxr-xr-x. root root system_u:object_r:mysqld_db_t:s0 bar
drwxr-xr-x. root root system_u:object_r:mysqld_db_t:s0 baz
-rw-r--r--. root root system_u:object_r:mysqld_db_t:s0 quux