525 Stimmen

Wie finde ich den Speicherort von MySQL my.cnf?

Gibt es einen MySQL-Befehl zum Auffinden der my.cnf Konfigurationsdatei, ähnlich wie bei PHPs phpinfo() ortet seine php.ini ?

3 Stimmen

Unter Ubuntu können Sie den Befehl locate my.cnf um herauszufinden, wo sich all diese Dateinamen befinden

0 Stimmen

Sie müssen möglicherweise Folgendes installieren locate verwenden: sudo apt install locate

7voto

Buhake Sindi Punkte 85274

Ich weiß nicht, wie Sie MySQL in Ihrer Linux-Umgebung eingerichtet haben, aber haben Sie das überprüft?

  • /etc/my.cnf

7voto

New Alexandria Punkte 6536

Wenn Sie einen Mac mit Homebrew benutzen, verwenden Sie

brew info mysql

Sie sehen dann etwas wie

$ brew info mysql
mysql: stable 5.6.13 (bottled)
http://dev.mysql.com/doc/refman/5.6/en/
Conflicts with: mariadb, mysql-cluster, percona-server
/usr/local/Cellar/mysql/5.6.13 (9381 files, 354M) *

Diese letzte Zeile ist die INSTALLERDIR gemäß der MySQL-Dokumentation

6voto

prafi Punkte 822

Sie können auch diesen Befehl ausführen.

mysql --help | grep cnf

1 Stimmen

Super, unter Windows musste ich die grep con findstr : mysql --help | findstr cnf und es hat gezaubert

5voto

coocheenin Punkte 11

Wenn Sie auf einem Debian/Ubuntu-System arbeiten und bereits mit modernen Versionen der Datenbank ausgestattet sind (alles ab 5.7 aufwärts, gilt auch für mysql 8), ist der beste Weg, die aktuelle .cnf Datei, die ich gefunden habe, ist:

sudo update-alternatives --config my.cnf

Sie sollten eine Ausgabe wie diese sehen:

There are 3 choices for the alternative my.cnf (providing /etc/mysql/my.cnf).

  Selection    Path                        Priority   Status
------------------------------------------------------------
  0            /etc/mysql/mariadb.cnf       500       auto mode
  1            /etc/mysql/mariadb.cnf       500       manual mode
  2            /etc/mysql/my.cnf.fallback   100       manual mode
* 3            /etc/mysql/mysql.cnf         300       manual mode

Es gibt zwei Zeilen in /etc/mysql/mysql.cnf die es sinnvollerweise zu beachten gilt:

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

MySQL wird für alle beobachten gehen .cnf Dateien in /etc/mysql/conf.d/ dann werden alle Dateien in /etc/mysql/mysql.conf.d/

Viel Spaß beim Tunen!

0 Stimmen

Um auf die ursprüngliche Frage zurückzukommen: Ich habe den Eindruck, dass es besser ist, wenn eine .cnf-Datei hinzufügen in mysql.conf.d zu ändern, als eine vorhandene .cnf-Datei zu bearbeiten. Ich habe die Konvention gesehen, sie <Benutzername>.cnf zu nennen, aber ich ziehe es vor, sie <Zweck>.cnf zu nennen, z.B. system_timestamp.cnf. Nicht nur (1) weil eine Neuinstallation Änderungen an einer bestehenden Datei überschreiben könnte, sondern auch (2) weil ein Blick in das Verzeichnis die Änderungen offenbart und (3) weil sie bei einem Wechsel des Hosts portabel sind. Ich habe auch den Eindruck mysql.conf.d ist neuer als conf.d .

4voto

Noel Swanson Punkte 191

Beachten Sie, dass mariadDB zwar Konfigurationsdetails aus den verschiedenen my.cnf-Dateien lädt, wie sie in den anderen Antworten hier aufgeführt sind, aber auch aus anderen Dateien mit anderen Namen laden kann.

Das heißt, wenn Sie eine Änderung in einer der my.cnf-Dateien vornehmen, kann diese durch eine andere Datei mit einem anderen Namen überschrieben werden. Damit die Änderung bestehen bleibt, müssen Sie sie in der richtigen (zuletzt geladenen) Konfigurationsdatei ändern - oder vielleicht sogar in allen Dateien.

Wie finden Sie also alle Konfigurationsdateien, die möglicherweise geladen sind? Anstatt nach my.cnf-Dateien zu suchen, versuchen Sie es mit:

grep -r datadir /etc/mysql/

Damit werden alle Stellen gefunden, an denen datadir erwähnt wird. In meinem Fall ergibt sich diese Antwort:

/etc/mysql/mariadb.conf.d/50-server.cnf:datadir     = /var/lib/mysql 

Wenn ich diese Datei (/etc/mysql/mariadb.conf.d/50-server.cnf) bearbeite, um den Wert für datadir zu ändern, funktioniert es, während eine Änderung in my.cnf nicht funktioniert. Versuchen Sie also, die Option, die Sie ändern möchten, auf diese Weise zu finden.

0 Stimmen

Grep -r datadir /etc/mysql/ hat mir eine Menge Zeit erspart, danke!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X