507 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 ?

2 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

701voto

tadamson Punkte 8211

Es gibt keinen internen MySQL-Befehl, um dies nachzuvollziehen, es ist ein wenig zu abstrakt. Die Datei könnte sich an 5 (oder mehr?) Stellen befinden, und sie wären alle gültig, weil sie kaskadierend geladen werden.

  • /etc/my.cnf
  • /etc/mysql/my.cnf
  • $MYSQL_HOME/my.cnf
  • [datadir]/my.cnf
  • ~/.my.cnf

Dies sind die Standardspeicherorte, die MySQL berücksichtigt. Wenn er mehr als einen findet, lädt er jeden von ihnen und die Werte überschreiben sich gegenseitig (in der aufgeführten Reihenfolge, denke ich). Auch die --defaults-file Parameter die ganze Sache außer Kraft setzen kann, also... im Grunde genommen ist es ein riesiges Ärgernis.

Aber da es so verwirrend ist, besteht eine gute Chance, dass es einfach in /etc/my.cnf steht.

(Wenn Sie nur die Werte sehen wollen: SHOW VARIABLES aber Sie benötigen die entsprechenden Berechtigungen).

ausführen. mysql --help und Sie werden sehen:

Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

enter image description here

0 Stimmen

mysql: unknown variable 'defaults-file=...

7 Stimmen

Stellen Sie sicher, dass Sie den MySQL-Server nach der Bearbeitung von my.cnf neu starten: /etc/init.d/mysqld restart .

5 Stimmen

Für mich (AWS EC2 Ubuntu), my.cnf befindet sich in /etc/mysql/my.cnf .

231voto

Timur Punkte 11272

Sie können MySQL um eine Liste aller Orte bitten, an denen es nach my.cnf (oder my.ini unter Windows) sucht. Es handelt sich dabei jedoch nicht um eine SQL-Abfrage. Führen Sie stattdessen aus:

$ mysqladmin --help

oder, vor 5.7:

$ mysqld --help --verbose

In den allerersten Zeilen finden Sie eine Meldung mit einer Liste aller my.cnf-Speicherorte, nach denen gesucht wird. Auf meinem Rechner ist das:

Default options are read from the following files in the given order:
/etc/my.cnf
/etc/mysql/my.cnf
/usr/etc/my.cnf
~/.my.cnf

Oder, unter Windows:

Default options are read from the following files in the given order:
C:\Windows\my.ini
C:\Windows\my.cnf
C:\my.ini
C:\my.cnf
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
C:\Program Files\MySQL\MySQL Server 5.5\my.cnf

Beachten Sie jedoch, dass Es könnte sein, dass an einem dieser Orte keine my.cnf-Datei vorhanden ist . Sie können die Datei also selbst erstellen - verwenden Sie eine der Beispielkonfigurationsdateien, die mit der MySQL-Distribution geliefert werden (unter Linux - siehe /usr/share/mysql/*.cnf Dateien und verwenden Sie die für Sie geeignete Datei - kopieren Sie sie nach /etc/my.cnf und dann nach Bedarf ändern).

Außerdem ist zu beachten, dass Es gibt auch eine Kommandozeilenoption --defaults-file die einen eigenen Pfad zur Datei my.cnf oder my.ini definieren kann. Dies ist zum Beispiel bei MySQL 5.5 unter Windows der Fall - es zeigt auf eine my.ini-Datei im Datenverzeichnis, die normalerweise nicht mit mysqld --help --verbose . Unter Windows - siehe Diensteigenschaften, um herauszufinden, ob dies bei Ihnen der Fall ist.

Prüfen Sie schließlich die https://dev.mysql.com/doc/refman/8.0/en/option-files.html - Dort ist sie ausführlicher beschrieben.

0 Stimmen

Sah vielversprechend aus, aber auf meiner Distro (opencsw.org) gibt es keinen mysqld. Es läuft mysqld_safe. "mysqld_safe --verbose --help" wird nicht erkannt.

0 Stimmen

Als ich es ausführte, erhielt ich folgendes Ergebnis: Default options are read from the following files in the given order: /etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf -- Ich habe die ersten 2 Dateien in umgekehrter Reihenfolge erwartet.

0 Stimmen

Die Informationen, die von mysqld --help --verbose widerspricht dem, was in dev.mysql.com/doc/refman/5.5/de/option-files.html . Nach meiner "aktuellen" Erfahrung mit Version 5.6 sind die Informationen auf der Website am korrektesten und relevantesten. Die vom Hilfebefehl angegebene Priorität des Dateispeicherorts ist irreführend und führt zu negativen Ergebnissen.

76voto

Dyllon Punkte 1181

Sie können find auch in einem Terminal ausführen.

find / -name my.cnf

1 Stimmen

Es ist der harte Weg :( Gibt es irgendeinen mysql-Befehl wie die phpinfo(), um den Speicherort der Konfigurationsdatei zu kennen?

0 Stimmen

find / -name my.cnf ist die beste Lösung, aber Sie können auch Ihr Home-Verzeichnis und /etc/mysql/my.conf überprüfen. Sie können auch sehen, ob Ihr MYSQL_HOME gesetzt ist, indem Sie eingeben echo $MYSQL_HOME in einem Terminal

12 Stimmen

Wow, das würde auf den meisten Rechnern ewig dauern. Die meisten modernen Linuxe haben locate installiert und solange updatedb regelmäßig ausgeführt wird, können Sie folgendes tun: locate my.cnf | less

40voto

kimbaudi Punkte 10785
mysql --help | grep /my.cnf | xargs ls

wird Ihnen sagen, wo my.cnf befindet sich auf Mac/Linux

ls: cannot access '/etc/my.cnf': No such file or directory
ls: cannot access '~/.my.cnf': No such file or directory
 /etc/mysql/my.cnf

In diesem Fall ist es in /etc/mysql/my.cnf

ls: /etc/my.cnf: No such file or directory
ls: /etc/mysql/my.cnf: No such file or directory
ls: ~/.my.cnf: No such file or directory
/usr/local/etc/my.cnf

In diesem Fall ist es in /usr/local/etc/my.cnf

1 Stimmen

Warum ist das nicht die Antwort?

1 Stimmen

Ich weiß, ich bin zu spät dran - aber was ist, wenn my.cnf nirgendwo existiert? ls: /etc/my.cnf: No such file or directory ls: /etc/mysql/my.cnf: No such file or directory ls: /usr/local/mysql/etc/my.cnf: No such file or directory ls: ~/.my.cnf: No such file or directory

1 Stimmen

Dies ist die einzige Lösung, die bei mir funktioniert hat. Die anderen waren Zeitverschwendung. Um eine Fehlermeldung zu vermeiden, verwenden Sie es auf diese Weise: mysql --help | grep /my.cnf . Ich verwende centos.

37voto

Satish Sharma Punkte 3226

Sie können verwenden:

locate my.cnf
whereis my.cnf
find . -name my.cnf

3 Stimmen

Großartig, meine war unter /etc/mysql/my.cnf in Ubuntu 12.0.1 auf EC2

2 Stimmen

whereis funktioniert hier nicht; es wird nach den Orten gesucht, die einer Befehl und kann beliebige Dateien nicht finden.

2 Stimmen

Und updatedb zur Aktualisierung der Liste locate geht durch - wenn my.cnf nicht indiziert wurde

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