Wo ist my.cnf für Homebrew-MySQL-Installationen?


293

Wo ist my.cnf für Homebrew-MySQL-Installationen? Installiert es eine?

Antworten:


263

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 --helpund 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.


49
Dies scheint nicht mehr der Fall zu sein; Ich sehe eine my.cnf-Datei in /usr/local/Cellar/mysql/5.6.15/ (oder in der von Ihnen installierten Version)
William Turrell

6
@williamt "mysql --help" listet diese Datei nicht als verwendet auf, ich denke, es ist nur eine Standardeinstellung, die mit den Installationsdateien
Vinicius Pinto

2
Ich bin am 5.6.26 und sehe es dort nicht.
Adam Grant

3
Am 5.6.26 kann durch Laufen lolcated werden: ls $(brew --prefix mysql)/*.cnf
danielgpm

23
mysql --help | grep cnfwar eigentlich einfacher die Zeilen zu finden.
Vinyll

267

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/localsodass die Datei my.cnf nicht zum /etcSystemordner 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

4
sudo cp $(brew --prefix mysql)/support-files/my-default.cnf /etc/my.cnf
Matt Clegg

7
Wenn Homebrew MySQL in installiert hat /usr/local/(was meiner Meinung nach die Standardeinstellung ist), können Sie auch das my.confin platzieren /usr/local/etc/, für das keine Root-Rechte erforderlich sind.
Gitaarik

1
brauen --prefix mysql gibt nicht den richtigen Pfad an, für mich wird '/usr/local/Cellar/mysql/5.7.16' angezeigt, aber tatsächlich ist mariadb in '/ usr / local / opt / mariadb /' installiert.
Zhaozhi

@ zhaozhi Verwenden brew --prefix mariadb. In der MariaDB-Distribution existiert das my-default.cnfnicht - also benutze my-small.cnf. Versuchen Sie diescp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
ewalshe

Dies muss die akzeptierte Antwort sein. Der erste ist falsch. Die gestellte Frage bezog sich auf Homebrew.
BugHunterUK

30

Ein Weg, um herauszufinden:

sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf

4
Tolle Antwort, ich habe von locate.updatedb erfahren. Es gibt jedoch standardmäßig keine Konfigurationsdatei, siehe die Antwort unten
glebm

15
Sie können mdfind -name my.cnfanstelle von locateBefehl unter OSX
JacopKane

Für mich locate my.cnfhat direkt gearbeitet. Ich bin nicht gelaufensudo /usr/libexec/locate.updatedb
Andru

1
/usr/local/Cellar/mysql/8.0.16/.bottle/etc/my.cnfund /usr/local/etc/my.cnf war was ich bekam
Vincent Tang

18

in meinem System war es

nano /usr/local/etc/my.cnf.default 

als Vorlage und

nano /usr/local/etc/my.cnf

als arbeiten.


18

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

Ich denke, Sie können auch laufen brew services stop mysqlund brew services start mysqlanstelle der launchctl unload ...Linien.
Mhulse

1
Das ist wahr - aber zum Zeitpunkt des Schreibens dieser Antwort waren diese Homebrew-Befehle noch nicht verfügbar. Ich werde die Antwort aktualisieren
Naabster

13

Da mysql --helpeine Liste von Dateien angezeigt wird, finde ich es nützlich, das Ergebnis weiterzuleiten, um lszu 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.


10

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

5

Sie können herausfinden, wo die my.cnfDatei 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.


4

Ich glaube die Antwort ist nein. Die Installation einer Datei in ~ / .my.cnf oder / usr / local / etc scheint die bevorzugte Lösung zu sein.


2
Nur auf meinem MBP kann ich mit /etc/my.cnf die Homebrew-Installation von mysql beeinflussen.
Ewalshe

1

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.cnfhier erstellen , wenn sie fehlt.

Starten Sie MySQL nach der Änderung neu:

brew services restart mysql

1

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 :)


-1

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.)


-1
  1. $ps aux | grep mysqld /usr/local/opt/mysql/bin/mysqld --basedir=/usr/local/opt/mysql --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/opt/mysql/lib/plugin

  2. Legen Sie Ihre my.cf-Datei in ab /usr/local/opt/mysql

  3. brew services restart mysql

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.