
Ich verwende MySQL 5.5 unter Ubuntu.
Es gibt eine my.cnf-Datei in /etc/mysql/, wo ich sie erwarten würde. – Großartig!
Bei Debian-Installationen von MySQL wird empfohlen, die Datei my.cnf nicht zu bearbeiten. In der Datei /etc/mysql/my.cnf gibt es eine IncludeDir-Anweisung, die im Ordner /etc/mysql/conf.d/ nach weiteren Optionsdateien sucht.
Wenn ich diese Datei hier platziere:
/etc/mysql/conf.d/my-local.cnf
MySQL liest die Datei und überschreibt alles in /etc/mysql/my.cnf.
Großartig! :-)
Hier ist das Problem:
Ich behalte meine lokale Kopie der Datei /etc/mysql/conf.d/my-local.cnf in der Quellcodeverwaltung und möchte sie regelmäßig für das gesamte Team aktualisieren. Meine Lösung besteht also darin, einen symbolischen Link darauf zu erstellen:
cd /etc/mysql/conf.d/
ln -s /path/to/my/my-local.cnf my-local.cnf
MySQL liest diesen symbolischen Link nicht.
Ich habe Folgendes überprüft:
- Sowohl die physische Datei als auch der symbolische Link haben gemäß dem MySQL-Handbuch die Dateierweiterung .cnf.
- Der MySQL-Benutzer hat Zugriff auf diese Datei
- Jeder Benutzer hat Zugriff auf diese Datei
- Der MySQL-Benutzer hat Zugriff auf den Symlink
- Jeder Benutzer hat Zugriff auf den Symlink
Zusammenfassend lässt sich also sagen, dass MySQL liest und analysiert, wenn sich eine physische Datei im Ordner /etc/mysql/conf.d/ befindet. Mysql liest keinen symbolischen Link in diesem Ordner.
Hat jemand eine Idee? Könnte das ein Debian-/Ubuntu-Problem sein?
Ein ähnliches, aber ungelöstes und leicht anderes Problem wurde skizziertHier.
Antwort1
Apparmor weiß nichts über den neuen Standort dermy.cnf
Der MySQL-Server folgt dem Symlink und versucht, das Ziel zu öffnen. Apparmor verweigert dies jedoch.
Um das Problem zu beheben, müssen Sie den Pfad my.cnf
zum/etc/apparmor.d/usr.sbin.mysqld
Antwort2
Es kann durch Apparmor verursacht werden, das ab Ubuntu 9.0.4 standardmäßig für mysqld aktiviert ist. Bitte lesen Siehttp://en.wikipedia.org/wiki/AppArmor.
Sie können sitespezifische Zusätze in /etc/apparmor.d/local/ ändern. Ich hatte das gleiche Problem und habe /etc/apparmor.d/local/usr.sbin.mysqld bearbeitet, damit es funktioniert. Achten Sie auf das letzte Komma in der Richtliniendatei.
# Site-specific additions and overrides for usr.sbin.mysqld. # For more details, please see /etc/apparmor.d/local/README. # vim:syntax=apparmor /etc/mysql/conf.d/* rl, @{HOMEDIRS}/** rwk,
- Starten Sie den Apparmor-Dienst neu, nachdem Sie /etc/apparmor.d/local/usr.sbin.mysqld bearbeitet haben
service apparmor restart
. Es sollte kein Fehler oder keine Warnung bezüglich /etc/apparmor.d/local/usr.sbin.mysqld auftreten. - In meinem Fall wollte ich datadir und die sitespezifische Datei my.cnf im Home-Verzeichnis des Benutzers verwenden.
Antwort3
Mir fallen einige Möglichkeiten ein:
Erstellen Sie den Symlink in die andere Richtung, d.h.
/home/developer/my-local.cnf -> /etc/mysql/conf.d/my-local.cnf
Verwenden Sie stattdessen einen Hardlink.
Stellen Sie es
/etc
mit einem Tool wie etckeeper unter Versionskontrolle.