У меня 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 (так как я просто переместил родительский каталог), а права доступа и права на этот и все другие файлы в этом каталоге такие же, как были.
Есть ли у вас какие-либо предложения? Я в тупике.
Я никогда не пытался делать именно то, что вы делаете, но я настроил базы данных mysql, которые были бы доступны независимо от того, с какой ОС я загружался. Я сделал это, переместив /var/lib/mysql/database
в раздел с общим доступом /shared/database
, а затем поставил символическую ссылку в каталог /var/lib/mysql/database
. Если эта процедура не работает для вас, я хотел бы выяснить, работает ли символическая ссылка вообще с TrueCrypt (она должна).
Файл, упомянутый в ошибке (ibdata1
), существует в /var/lib/mysql
, поэтому я могу только представить, что вы переместили один каталог на множество вверх по дереву. Не перемещайте /var/lib/mysql
, перемещайте конкретный каталог для вашей базы данных /var/lib/mysql/database
Проблема была в AppArmor, с которым у меня никогда не было опыта. Я (наконец-то) нашел неясный веб-сайт, на котором было написано следующее:
Ubuntu использует некоторое программное обеспечение безопасности под названием AppArmor, которое определяет области доступа к приложениям вашей файловой системы. Если вы не измените профиль AppArmor для MySQL, вы никогда не сможете перезапустить MySQL с новым расположением datadir.
blockquote>(из 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 это работает как шарм!