Ändern des MySQL-Datenverzeichnisses in Ubuntu Server 10.04

Ändern des MySQL-Datenverzeichnisses in Ubuntu Server 10.04

Beim Versuch, das Datenverzeichnis im Ubuntu-Server 10.04 zu ändern, erhielt ich den folgenden Fehler.

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.

Antwort1

Nach einiger allgemeiner Verwirrung bezüglich der Berechtigungen wurde dem OP klar, dass das Problem nicht darin bestand, dass er nicht über keine Berechtigungen und Pfadrechte verfügte, sondern dass AppArmor MySQL daran hinderte, am neuen Speicherort zu lesen und zu schreiben.

Dies ist seine Lösung:

Stoppen Sie zunächst MySQL, damit beim Herumprobieren nichts Ungewöhnliches passiert:

$ sudo stop mysql

Verschieben Sie dann alle Datenbankverzeichnisse an ihren neuen Standort:

$ sudo mv /var/lib/mysql/<all folders> /new-mysql-dir/

Verschieben Sie die Dateien nicht, sie werden von MySQL generiert. Verschieben Sie nur die Ordner (das sind die Datenbanken).

Bitten Sie AppArmor dann höflich, MySQL die Verwendung des neuen Ordners zu gestatten:

$ sudo vim /etc/apparmor.d/usr.sbin.mysqld
  >> add lines
     /new-mysql-dir/ r,
     /new-mysql-dir/** rwk,

Dann teilen Sie MySQL mit, dass das Datenverzeichnis verschoben wurde:

$ sudo vim /etc/mysql/my.cnf 
  >> change the line
     datadir=/var/lib/mysql
  >> to
     datadir=/my-new-db-dir/

HINWEIS: Abhängig von Ihrer Datenbankkonfiguration müssen Sie möglicherweise auch das InnoDB-Data-Home-Dir usw. ändern.

Starten Sie dann AppArmor neu, um die neuen Einstellungen zu lesen:

$ sudo /etc/init.d/apparmor restart

Und starten Sie MySQL erneut mit dem neuen Datenverzeichnis:

$ sudo start mysql

verwandte Informationen