При попытке изменить каталог данных на сервере ubuntu 10.04 я получал следующую ошибку.
100809 19:33:00 [Note] Plugin 'FEDERATED' is disabled.
/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
100809 19:33:00 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
100809 19:33:00 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: 'create'.
InnoDB: Cannot continue operation.
После некоторой общей путаницы с разрешениями OP понял, что проблема не в том, что у него нет разрешений и прав на пути, а в том, что AppArmor не позволяет MySQL читать и писать в новое место.
Это его решение:
Сначала остановите MySQL, чтобы ничего странного не произошло, пока вы возитесь:
$ sudo stop mysql
Затем переместите все каталоги баз данных в их новый дом:
$ sudo mv /var/lib/mysql/<all folders> /new-mysql-dir/
Не перемещайте файлы, они будут созданы mysql, просто переместите папки (которые являются базами данных).
Затем вежливо попросите AppArmor разрешить mysql использовать новую папку:
$ sudo vim /etc/apparmor.d/usr.sbin.mysqld
>> add lines
/new-mysql-dir/ r,
/new-mysql-dir/** rwk,
Затем сообщите mysql, что каталог данных переместился:
$ sudo vim /etc/mysql/my.cnf
>> change the line
datadir=/var/lib/mysql
>> to
datadir=/my-new-db-dir/
ПРИМЕЧАНИЕ. В зависимости от настроек вашей базы данных вам может потребоваться также изменить innodb-data-home-dir и т. Д.
Затем перезапустите AppArmor, чтобы прочитать новые настройки:
$ sudo /etc/init.d/apparmor restart
И снова запустите MySQL, используя новый каталог данных:
$ sudo start mysql