Wo ist my.cnf für Homebrew-MySQL-Installationen? Installiert es eine?
Wo ist my.cnf für Homebrew-MySQL-Installationen? Installiert es eine?
Antworten:
Standardmäßig gibt es keine my.cnf. Daher beginnt MySQL mit allen Standardeinstellungen. Wenn Sie Ihre eigene my.cnf erstellen möchten, um alle Standardeinstellungen zu überschreiben, platzieren Sie sie unter /etc/my.cnf.
Sie können es auch ausführen mysql --help
und nach den aufgelisteten Conf-Speicherorten suchen.
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
The following groups are read: mysql client
The following options may be given as the first argument:
--print-defaults Print the program argument list and exit.
--no-defaults Don't read default options from any option file.
--defaults-file=# Only read default options from the given file #.
--defaults-extra-file=# Read this file after the global files are read.
Wie Sie sehen können, gibt es auch einige Optionen zum Umgehen der conf-Dateien oder zum Angeben anderer zu lesender Dateien, wenn Sie mysql in der Befehlszeile aufrufen.
ls $(brew --prefix mysql)/*.cnf
mysql --help | grep cnf
war eigentlich einfacher die Zeilen zu finden.
Das Homebrew-MySQL enthält Beispielkonfigurationsdateien im Ordner "support-files" der Installation.
ls $(brew --prefix mysql)/support-files/my-*
Wenn Sie die Standardeinstellungen ändern müssen, können Sie eine davon als Ausgangspunkt verwenden.
cp $(brew --prefix mysql)/support-files/my-default.cnf /usr/local/etc/my.cnf
Wie @rednaw hervorhebt, wird höchstwahrscheinlich eine Homebrew-Installation von MySQL durchgeführt, /usr/local
sodass die Datei my.cnf nicht zum /etc
Systemordner hinzugefügt werden sollte. Daher habe ich den Befehl zum Kopieren der Datei geändert /usr/local/etc
.
Wenn Sie MariaDB anstelle von MySQL verwenden, verwenden Sie Folgendes:
cp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
sudo cp $(brew --prefix mysql)/support-files/my-default.cnf /etc/my.cnf
/usr/local/
(was meiner Meinung nach die Standardeinstellung ist), können Sie auch das my.conf
in platzieren /usr/local/etc/
, für das keine Root-Rechte erforderlich sind.
brew --prefix mariadb
. In der MariaDB-Distribution existiert das my-default.cnf
nicht - also benutze my-small.cnf
. Versuchen Sie diescp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
Ein Weg, um herauszufinden:
sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf
mdfind -name my.cnf
anstelle von locate
Befehl unter OSX
locate my.cnf
hat direkt gearbeitet. Ich bin nicht gelaufensudo /usr/libexec/locate.updatedb
/usr/local/Cellar/mysql/8.0.16/.bottle/etc/my.cnf
und /usr/local/etc/my.cnf
war was ich bekam
in meinem System war es
nano /usr/local/etc/my.cnf.default
als Vorlage und
nano /usr/local/etc/my.cnf
als arbeiten.
Nichts hat mir wirklich geholfen - ich konnte die Einstellungen in einer /etc/my.cnf-Datei nicht überschreiben. Also suchte ich wie John vorgeschlagen hatte https://stackoverflow.com/a/7974114/717251
sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf
Es fand eine andere my.cnf in
/usr/local/Cellar/mysql/5.6.21/my.cnf
Das Ändern dieser Datei hat bei mir funktioniert! Vergessen Sie nicht, den Startagenten neu zu starten:
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Aktualisieren:
Wenn Sie eine relativ neue Installation von Homebrew haben, sollten Sie die Befehle für die Brauservices verwenden, um MySQL neu zu starten (verwenden Sie Ihre installierte Homebrew-MySQL-Version, dh MySQL oder MySQL @ 5.7):
brew services stop mysql
brew services start mysql
brew services stop mysql
und brew services start mysql
anstelle der launchctl unload ...
Linien.
Da mysql --help
eine Liste von Dateien angezeigt wird, finde ich es nützlich, das Ergebnis weiterzuleiten, um ls
zu sehen, welche davon vorhanden sind:
$ mysql --help | grep /my.cnf | xargs ls
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
Für mein (Homebrew installiert) MySQL 5.7 scheinen die Dateien aktiviert zu sein /usr/local/etc/my.cnf
.
Auf Ihrem Shell-Typ my_print_defaults --help
Am Ende des Ergebnisses sollten Sie die Datei sehen können, aus der der Server die Konfigurationen liest. Es druckt ungefähr so:
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
Sie können herausfinden, wo die my.cnf
Datei von dem spezifischen Paket bereitgestellt wurde, z
brew list mysql # or: mariadb
Zusätzlich zum Überprüfen, ob diese Datei gelesen wurde, können Sie Folgendes ausführen:
sudo fs_usage | grep my.cnf
Dies zeigt Ihnen die Aktivität des Dateisystems in Echtzeit in Bezug auf diese Datei.
Ich glaube die Antwort ist nein. Die Installation einer Datei in ~ / .my.cnf oder / usr / local / etc scheint die bevorzugte Lösung zu sein.
Im Fall von Homebrew würde mysql auch in seinem Kellerverzeichnis nach my.cnf suchen, zum Beispiel:
/usr/local/Cellar/mysql/5.7.21/my.cnf
Für den Fall, dass man die Konfiguration lieber in der Nähe der Binärdateien hält - my.cnf
hier erstellen , wenn sie fehlt.
Starten Sie MySQL nach der Änderung neu:
brew services restart mysql
Serverversion: 8.0.19 Homebrew. macOS Catalina 10.15.5 und installierte MySQL über Homebrew. Fand diese Datei hier:
/usr/local/etc/my.cnf
Diese Lösung hat geholfen :)
Für MacOS (High Sierra) MySQL, das mit Home Brew installiert wurde.
Das Erhöhen der globalen Variablen aus der MySQL-Umgebung war nicht erfolgreich. In diesem Fall ist das Erstellen von ~ / .my.cnf die sicherste Option. Das Hinzufügen von Variablen mit [mysqld] enthält die Änderungen (Hinweis: Wenn Sie mit [mysql] ändern, funktioniert die Änderung möglicherweise nicht).
<~ / .my.cnf> [mysqld] connect_timeout = 43200 max_allowed_packet = 2048M net_buffer_length = 512M
Starten Sie den MySQL-Server neu. und überprüfen Sie die Variablen. y
sql> SELECT @@ max_allowed_packet; + ---------------------- + | @@ max_allowed_packet | + ---------------------- + | 1073741824 | + ---------------------- +
1 Reihe im Satz (0,00 Sek.)