Antworten:
Wenn Sie unter Linux arbeiten, starten Sie das 'mysqld' mit stracez strace ./mysqld.
Unter all den anderen Systemaufrufen finden Sie etwas wie:
stat64("/etc/my.cnf", 0xbfa3d7fc) = -1 ENOENT (No such file or directory)
stat64("/etc/mysql/my.cnf", {st_mode=S_IFREG|0644, st_size=4227, ...}) = 0
open("/etc/mysql/my.cnf", O_RDONLY|O_LARGEFILE) = 3
Wie Sie sehen können, listet es die .cnf-Dateien auf, die es zu verwenden versucht und schließlich verwendet.
ps auxfden für MySQL ausgeführten Befehl ausführen und suchen. Normalerweise sieht es so aus wie mysqld --basedir=/usr/local/mysql ...(beachten Sie, dass ... nur bedeutet, dass der Befehl möglicherweise mehr Flags enthält, aber ich werde nicht alles auflisten). Wenn Sie es gefunden haben, kopieren Sie das Ganze und fahren Sie MySQL herunter. Wenn Sie unter Linux sind, ist es /etc/init.d/mysqld stopoder mysqladmin -u root -p shutdown. Führen Sie dann straceden von Ihnen kopierten Befehl mysql aus. So würde es aussehen:strace mysqld --basedir=/usr/local/mysql
open(...Leitung nicht. Stattdessen habe ich 4 Zeilen, die mit enden = -1 Err#2. Woher weiß ich jetzt, welche Datei geladen ist?
sudo dtruss mysqld 2>&1|grep my.cnf@mgPePe verwenden. Diese Ausgabe bedeutet wahrscheinlich, dass keine der Dateien gefunden wurde und keine geöffnet wurde.
Entnommen aus dem fantastischen O'Reilly-Buch "High Performance MySQL":
$ which mysqld
/usr/sbin/mysqld
$ /usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"
Default options are read from the following files in the given order:
/etc/mysql/my.cnf ~/.my.cnf /usr/etc/my.cnf
!includedir. Ich versuche herauszufinden, warum die !includedirDirektive in meiner /etc/mysql/my.cnfDatei nicht funktioniert.
mysqldmit dem vollen Pfad anrufen müssen ?!
Wenn Sie es ausführen mysql --verbose --help | less, erfahren Sie in Zeile 11, nach welchen .cnfDateien gesucht wird.
Sie können auch mysql --print-defaultszeigen, wie die Konfigurationswerte verwendet werden. Dies kann auch hilfreich sein, um festzustellen, welche Konfigurationsdatei geladen wird.
mysqldanstelle vonmysql
mysqld --print-defaultsgab mir genau das, was ich wollte, als ich diese Frage googelte.
Ich bin unter Windows und habe die neueste Version von MySQL Community 5.6 installiert
Um zu sehen, welche Konfigurationsdatei verwendet wird, ging ich zu Verwaltung> Dienste> MySQL56> Rechtsklick> Eigenschaften und überprüfe den Pfad zur ausführbaren Datei:
"C: / Programme / MySQL / MySQL Server 5.6 / bin \ mysqld" --defaults-file = "C: \ ProgramData \ MySQL \ MySQL Server 5.6 \ my.ini" MySQL56
C:\ProgramData\MySQL\MySQL Server 5.7\my.inistandardmäßig aktiviert.
Eine Alternative ist zu verwenden
mysqladmin variables
mysqld --help --verbose ist gefährlich. Sie können die PID-Datei zum Ausführen der Instanz einfach überschreiben! Verwenden Sie es mit --pid-file = XYZ
Oh, und Sie können es nicht wirklich verwenden, wenn mehr als eine Instanz ausgeführt wird. Es wird nur der Standardwert angezeigt.
Wirklich guter Artikel darüber:
Habe gerade einen kurzen Test auf Ubuntu gemacht:
installierter MySQL-Server, der /etc/mysql/my.cnf erstellt hat
mysqld --verbose --help | grep -A 1 "Standardoptionen"
110112 13:35:26 [Hinweis] Das Plugin 'FEDERATED' ist deaktiviert.
Standardoptionen werden in der angegebenen Reihenfolge aus den folgenden Dateien gelesen: /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~ / .my.cnf
Erstellt /etc/my.cnf und /usr/etc/my.cnf mit jeweils einer anderen Portnummer
mysql neu gestartet - es wurde die in /usr/etc/my.cnf festgelegte Portnummer verwendet
In der Zwischenzeit wurde auch die Option --defaults-file für mysqld gefunden. Wenn Sie dort eine Konfigurationsdatei angeben, wird nur diese verwendet, unabhängig davon, was von / usr / sbin / mysqld --verbose --help | zurückgegeben wird grep -A 1 "Standardoptionen"
Ich fand das wirklich nützlich:
Control Panel -> Administration ToolsPropertiesPath to executableund prüfen Sie, ob es den Pfad zum enthältmy.ini/my.cfgAuf einigen Servern sind mehrere MySQL-Versionen installiert und konfiguriert. Stellen Sie sicher, dass Sie mit der richtigen Version arbeiten, die mit einem Unix-Befehl ausgeführt wird:
ps -ax | grep mysql
Für Benutzer, die Windows Server mit MySQL als Dienst ausführen, können Sie auf einfache Weise herausfinden, welche Konfigurationsdatei Sie ausführen, indem Sie die Systemsteuerung für Dienste öffnen, Ihren MySQL-Dienst suchen (in meinem Fall 'MYSQL56'), mit der rechten Maustaste klicken und auf Eigenschaften klicken . Dann können Sie von hier aus den "Pfad zur ausführbaren defaults-fileDatei " überprüfen, der einen Schalter haben sollte , der zeigt, wo sich Ihre Konfigurationsdatei befindet.
Wenn Sie unter Windows arbeiten, können Sie Sysinternals procmon verwenden . Öffnen Sie es und konfigurieren Sie die Filtereinstellung wie folgt. Klicken Sie dann auf "Hinzufügen". Jetzt überwacht procmon mysqld.
Starten Sie nun Ihren MySQL-Server wie gewohnt. Procmon erfasst die Hintergrundoperationen von MySQL. Suche "mein". Im Ergebnisbereich von procmon finden Sie ungefähr Folgendes:
Es ist klar, dass MySQL nacheinander eine Liste von Konfigurationsdateien durchsucht. In meinem Fall wurde es C:\mysql-5.7.19-winx64\my.cnferfolgreich gefunden, sodass es dieses verwendet.