Gibt es einen MySQL-Befehl zum Auffinden der my.cnf
Konfigurationsdatei, ähnlich wie bei PHPs phpinfo()
ortet seine php.ini
?
mysql: unknown variable 'defaults-file=...
Gibt es einen MySQL-Befehl zum Auffinden der my.cnf
Konfigurationsdatei, ähnlich wie bei PHPs phpinfo()
ortet seine php.ini
?
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.
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
Stellen Sie sicher, dass Sie den MySQL-Server nach der Bearbeitung von my.cnf neu starten: /etc/init.d/mysqld restart
.
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.
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.
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.
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.
Es ist der harte Weg :( Gibt es irgendeinen mysql-Befehl wie die phpinfo(), um den Speicherort der Konfigurationsdatei zu kennen?
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
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
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
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
whereis
funktioniert hier nicht; es wird nach den Orten gesucht, die einer Befehl und kann beliebige Dateien nicht finden.
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.
2 Stimmen
Unter Ubuntu können Sie den Befehl
locate my.cnf
um herauszufinden, wo sich all diese Dateinamen befinden0 Stimmen
Sie müssen möglicherweise Folgendes installieren
locate
verwenden:sudo apt install locate