MySQL Data Verzeichnis verschieben – Ubuntu 9.10

Das Verzeichnis in dem MySQL seine Datenbanken ablegt ist normalerweise /usr/local/mysql. Ich will aber, dass es woanders liegt, nämlich in /home/me/Dokumente/mysql_data. Das ist auch noch ein Symlink auf ein anderes Verzeichnis (/media/sdb1/_DOKUMENTE/mysql_data). OK, erschwerte Bedingungen.

Trotzdem: Klingt einfach, oder? Pustekuchen!

Was ist das Problem?
Die Fehlermeldungen mal:

  • operation="open" pid=26820 parent=26712 profile="/usr/sbin/mysqld" requested_mask="::rw" denied_mask="::rw" fsuid=114 ouid=0 name="/media/sdb1/_DOKUMENTE/mysql_data/ibdata1"
  • InnoDB: Operating system error number 13 in a file operation.

Dateisystemberechtigungen sahen gut aus. Dacht schon die InnoDB hätte Schaden genommen oder so aber NEIN! Ich hatte die Rechung ohne eine Daemon namens „AppArmor“ gemacht, der definiert, welches Programm worauf zugreifen darf. Wohl um es gegen RootKits sicherer zu machen.

Naja, so geht’s dann am Ende dann:

1. /etc/mysql/my.cnf bearbeiten

[mysqld]
...
datadir         = /home/me/Dokumente/mysql_data

2. Sicherstellen, dass das Verzeichnis von den Berechtigungen her wirklich lesbar und schreibbar ist für den mysql daemon.

3. /etc/apparmor.d/usr.sbin.mysqld bearbeiten

/usr/sbin/mysqld {
...
/media/sdb1/_DOKUMENTE/mysql_data/ r,
/media/sdb1/_DOKUMENTE/mysql_data/** rwk,
/home/me/Dokumente/mysql_data/ r,
/home/me/Dokumente/mysql_data/** rwk,
...
}

4. AppArmor neu starten

# service apparmor restart

4. MySQL neu starten

# service mysql restart

Zu allem Überfluss waren die Daten auch noch von einer antiken MySQL-Version, so dass die Verzeichnisse general_log, help_category, help_keyword, help_relation, help_topic, ndb_binlog_index, plugin, proc, procs_priv, servers, slow_log, time_zone, time_zone_leap_second, time_zone_name, time_zone_transition, time_zone_transition_type noch nicht existierten.
Hier war mir der Weg des geringsten Widerstandes grade recht.

# my mysql mysql_; mysql_install_db

Meldungen während dem Start lassen sich beobachten in

# tail -f /var/log/syslog

Sollte sich der MySQL Server nicht beenden lassen – warum auch immer – hilft u.U.:

# mysqladmin shutdown -uroot -p

Neues MySQL root Passwort setzen:

# mysqladmin password NEUESPASSWORT -uroot -p

Vielen Dank für die Aufmerksamkeit.

Add Comment

Required fields are marked *. Your email address will not be published.