Gibt es einen Befehl, um festzustellen, welche Konfigurationsdatei MySQL 5.0 derzeit verwendet?
Wenn Sie mit Linux arbeiten, starten Sie 'mysqld' mit strace
, zum Beispiel strace ./mysqld
.
Bei allen anderen Systemaufrufen finden Sie Folgendes:
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, listet er die .cnf-Dateien auf, die er zu verwenden versucht und schließlich verwendet.
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
Wenn Sie mysql --verbose --help | less
ausführen, werden Sie über Zeile 11 informiert, nach welchen .cnf
-Dateien gesucht werden soll.
Sie können auch mysql --print-defaults
ausführen, um anzuzeigen, wie die Konfigurationswerte verwendet werden. Dies kann auch hilfreich sein, um zu ermitteln, welche Konfigurationsdatei gerade geladen wird.
Ich bin unter Windows und habe die neueste Version der MySQL-Community 5.6 installiert
Um zu sehen, welche Konfigurationsdatei verwendet wurde, konnte ich unter Verwaltung> Dienste> MySQL56> Rechtsklick> Eigenschaften gehen und den Pfad zur ausführbaren Datei überprüfen:
"C:/Programme/MySQL/MySQL Server 5.6/bin\mysqld" --defaults-file = "C:\ProgramData\MySQL\MySQL Server 5.6\my.ini" MySQL56
Eine Alternative ist zu verwenden
mysqladmin variables
mysqld --help --verbose ist gefährlich. Sie können die PID-Datei für die Ausführung der Instanz leicht ü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 dazu:
Hab gerade einen kurzen Test auf Ubuntu gemacht:
installierte den 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 aus den folgenden Dateien in der angegebenen Reihenfolge gelesen: /etc/mysql/my.cnf/usr/etc/my.cnf ~/.my.cnf
/etc/my.cnf und /usr/etc/my.cnf erstellt, jeweils mit einer anderen Portnummer
mysql wurde neu gestartet - es wurde die in /usr/etc/my.cnf festgelegte Portnummer verwendet
Inzwischen fand auch die Option --defaults-file zur mysqld. 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 Tools
.Properties
.Path to executable
aus und prüfen Sie, ob er den Pfad zum my.ini/my.cfg
enthält.Auf einigen Servern sind mehrere MySQL-Versionen installiert und konfiguriert. Stellen Sie sicher, dass Sie mit der korrekten Version des Unix-Befehls __.
ps -ax | grep mysql
Nur für den Fall, dass Sie mac ausführen, kann dies auch durch Folgendes erreicht werden:
Sudo dtruss mysqld 2>&1 | grep cnf
Wenn Sie Windows-Server mit mysql als Dienst ausführen, können Sie auf einfache Weise herausfinden, welche Konfigurationsdatei Sie ausführen, indem Sie das Dienststeuerungsfeld öffnen, Ihren mysql-Dienst (in meinem Fall 'MYSQL56') suchen, mit der rechten Maustaste klicken und Eigenschaften auswählen . Von hier aus können Sie den "Pfad zur ausführbaren Datei" überprüfen, der über einen defaults-file
-Schalter verfügen sollte, der auf die Position Ihrer Konfigurationsdatei verweist.
Wenn Sie unter Windows arbeiten, können Sie Sysinternals procmon verwenden. Öffnen Sie es und konfigurieren Sie die Filtereinstellungen wie folgt. Klicken Sie anschließend auf "Hinzufügen". Jetzt überwacht procmon mysqld.
Starten Sie nun Ihren MySQL-Server ganz normal. Procmon erfasst die Hintergrundoperationen von mysql. Suche "mein". Im procmon-Ergebnisbereich finden Sie etwa Folgendes:
Es ist klar, dass mysql nacheinander eine Liste von Konfigurationsdateien durchsucht. In meinem Fall hat es C:\mysql-5.7.19-winx64\my.cnf
erfolgreich gefunden, so dass es dieses verwendet.