Herausfinden welche Konfigurations-Dateien von MySQL geladen werden…

… und vor allem in welcher Reihenfolge.

Das ist nicht so einfach wie es klingt, zumal meiner Ansicht nach diese Information von MySQL selber zugänglich gemacht werden müsste.

Mein favorisierter Weg an diese Informationen zu kommen geht über strace, zumal diese Methode runtime-Information bereitstellt und nicht wie andere Methoden lediglich statische Informationen (wo befinden sich .cnf Dateien, oder welche sollten geladen werden wenn Sie denn überhaupt vorhanden sind).

Lange Rede kurzer Sinn:

strace mysql ";" 2>&1 | grep '.cnf'

Beispiel-Ausgabe, mit alle Informationen auf einem Blick:

 stat("/etc/my.cnf", 0x7fff3d17dae0) = -1 ENOENT (No such file or directory)
 stat("/etc/mysql/my.cnf", {st_mode=S_IFREG|0644, st_size=3504, ...}) = 0
 open("/etc/mysql/my.cnf", O_RDONLY) = 3
 stat("/etc/mysql/conf.d/mysqld_safe_syslog.cnf", {st_mode=S_IFREG|0644, st_size=21, ...}) = 0
 open("/etc/mysql/conf.d/mysqld_safe_syslog.cnf", O_RDONLY) = 4
 stat("/usr/etc/my.cnf", 0x7fff3d17dae0) = -1 ENOENT (No such file or directory)
 stat("/home/jenkins/.my.cnf", 0x7fff3d17dae0) = -1 ENOENT (No such file or directory)
 stat("/home/jenkins/.mylogin.cnf", 0x7fff3d17dae0) = -1 ENOENT (No such file or directory)

That’s it.

Ergänzung:

Ab MySQL 5.6 gibt es ein zusätzliches .cnf-File, das alle Setting überschreibt ohne im obigen Check aufzutauchen: /usr/my.cnf
Eine Erklärung warum es dieses File gibt findet Ihr hier: https://bugs.mysql.com/bug.php?id=68643

Also entweder löschen oder einfach als Standard verwenden – man muss es nur wissen 😉

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.