MySQL liest keine symbolischen Links für Optionsdateien my.cnf

MySQL liest keine symbolischen Links für Optionsdateien my.cnf

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.cnfzum/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 /etcmit einem Tool wie etckeeper unter Versionskontrolle.

verwandte Informationen