Переместить каталог данных mysql на том TrueCrypt

У меня Ubuntu Desktop 11.04, и я пытаюсь переместить / var / lib / mysql на том TrueCrypt, и мне не удается при каждой попытке.

Это для целей разработки, и есть определенная база данных, с которой мне нужно работать, и которая должна быть в высокой степени защищена по многочисленным причинам.

После новой установки mysql-server и mysql-client я могу запустить mysql без каких-либо проблем. Затем я перемещаю / var / lib / mysql на том TrueCrypt (назовите его / foo / truecrypt), а затем редактирую /etc/mysql/my.cnf, чтобы указать datadir на /foo/truecrypt.

После проверки разрешений, чтобы убедиться, что они совпадают, я пытаюсь снова запустить mysql.

Это не работает (MySQL просто продолжает зависать), и я не могу заставить MySQL снова работать (даже после завершения всех процессов mysql и перемещения datadir обратно в / var / lib / mysql). Я сделал apt-get --purge удалить mysql-клиент mysql-сервер mysql-common (а затем удалил все файлы в / var / lib / mysql и т. Д. / Mysql / и / var / log / mysql *) по крайней мере 5 раз за вечер, чтобы получить новую установку и попробовать еще раз.

Пока MySQL зависает, я зашел в / var / log / mysql / и вот что показано в mysql.err:

120421 22:50:03 [Note] Plugin 'FEDERATED' is disabled.
^G/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
120421 22:50:03 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
120421 22:50:03  InnoDB: Initializing buffer pool, size = 8.0M
120421 22:50:03  InnoDB: Completed initialization of buffer pool
120421 22:50:03  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.

Я пытался переместить / var / lib / mysql / и затем создание символической ссылки вместо редактирования my.cnf. Это не имеет значения. Вышеуказанные ошибки указывают на отсутствующий файл или проблемы с разрешениями. Тем не менее, plugin.frm существует в / foo / truectrypt / mysql / mysql (так как я просто переместил родительский каталог), а права доступа и права на этот и все другие файлы в этом каталоге такие же, как были.

Есть ли у вас какие-либо предложения? Я в тупике.

0
задан 22 April 2012 в 06:55

2 ответа

Я никогда не пытался делать именно то, что вы делаете, но я настроил базы данных mysql, которые были бы доступны независимо от того, с какой ОС я загружался. Я сделал это, переместив /var/lib/mysql/database в раздел с общим доступом /shared/database, а затем поставил символическую ссылку в каталог /var/lib/mysql/database. Если эта процедура не работает для вас, я хотел бы выяснить, работает ли символическая ссылка вообще с TrueCrypt (она должна).

Файл, упомянутый в ошибке (ibdata1), существует в /var/lib/mysql, поэтому я могу только представить, что вы переместили один каталог на множество вверх по дереву. Не перемещайте /var/lib/mysql, перемещайте конкретный каталог для вашей базы данных /var/lib/mysql/database

0
ответ дан 22 April 2012 в 06:55

Проблема была в AppArmor, с которым у меня никогда не было опыта. Я (наконец-то) нашел неясный веб-сайт, на котором было написано следующее:

Ubuntu использует некоторое программное обеспечение безопасности под названием AppArmor, которое определяет области доступа к приложениям вашей файловой системы. Если вы не измените профиль AppArmor для MySQL, вы никогда не сможете перезапустить MySQL с новым расположением datadir.

(из http://article.my-addr.com/?show=linux_ubuntu_change_datadir-move_mysql_database_to_other_path )

Мне нужно отредактировать /etc/apparmor.d /usr.sbin.mysqld следующим образом:

После следования инструкциям: «Дублируйте строки, начинающиеся с / var / lib / mysql, и заменяйте дублированные строки на / usr / new_datadir», а затем используйте символическую ссылку / usr / new_datadir в / var / lib / mysql это работает как шарм!

0
ответ дан 22 April 2012 в 06:55

Другие вопросы по тегам:

Похожие вопросы: