Gdzie jest plik my.cnf dla instalacji homebrew mysql?


Odpowiedzi:


263

Domyślnie nie ma pliku my.cnf. Jako taki, MySQL zaczyna się od wszystkich ustawień domyślnych. Jeśli chcesz utworzyć własny plik my.cnf w celu zastąpienia wartości domyślnych, umieść go na /etc/my.cnf.

Możesz także uruchomić mysql --helpi przejrzeć wymienione lokalizacje konf.

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.

Jak widać, istnieją również opcje pomijania plików conf lub określania innych plików do odczytania po wywołaniu mysql w wierszu poleceń.


49
Wydaje się, że już tak nie jest; Widzę plik my.cnf w /usr/local/Cellar/mysql/5.6.15/ (lub dowolnej zainstalowanej wersji)
William Turrell,

6
@williamt „mysql --help” nie wyświetla tego pliku jako używanego, myślę, że jest to domyślny plik instalacyjny
Vinicius Pinto

2
Mam 5.6.26 i nie widzę tego tam.
Adam Grant

3
Na 5.6.26 można lolkować, uruchamiając: ls $(brew --prefix mysql)/*.cnf
danielgpm

23
mysql --help | grep cnfłatwiej było znaleźć linie.
vinyll

267

Homebrew mysql zawiera przykładowe pliki konfiguracyjne w folderze plików obsługi instalacji.

ls $(brew --prefix mysql)/support-files/my-*

Jeśli chcesz zmienić ustawienia domyślne, możesz użyć jednego z nich jako punktu wyjścia.

cp $(brew --prefix mysql)/support-files/my-default.cnf /usr/local/etc/my.cnf

Jak wskazuje @rednaw, homebrew instalacja MySQL najprawdopodobniej będzie w nim, /usr/localwięc plik my.cnf nie powinien być dodawany do /etcfolderu systemowego , dlatego zmieniłem polecenie kopiowania pliku /usr/local/etc.

Jeśli używasz MariaDB zamiast MySQL, skorzystaj z następujących opcji:

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
Jeśli Homebrew zainstalował MySQL w /usr/local/(myślę, że jest to domyślny), możesz również umieścić go my.confw /usr/local/etc/, który nie wymaga uprawnień roota.
gitaarik

1
brew --prefix mysql nie podaje poprawnej ścieżki, dla mnie pokazuje „/usr/local/Cellar/mysql/5.7.16”, ale rzeczywiście mariadb jest zainstalowany w „/ usr / local / opt / mariadb /”
zhaozhi,

@zhaozhi Use brew --prefix mariadb. W dystrybucji MariaDB my-default.cnfnie istnieje - użyj my-small.cnf. Spróbuj tegocp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
ewalshe,

To musi być zaakceptowana odpowiedź. Pierwszy jest niepoprawny. Pytanie dotyczyło homebrew.
BugHunterUK

30

Jednym ze sposobów, aby dowiedzieć się:

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

4
Niesamowita odpowiedź, dowiedziałem się o locate.updatedb. Jednak domyślnie nie ma pliku konfiguracyjnego, patrz odpowiedź poniżej
glebm

15
Możesz użyć mdfind -name my.cnfzamiast locatekomendy w OSX
JacopKane

Dla mnie locate my.cnfpracował bezpośrednio. Nie sudo /usr/libexec/locate.updatedb
biegłem

1
/usr/local/Cellar/mysql/8.0.16/.bottle/etc/my.cnfi /usr/local/etc/my.cnf właśnie to dostałem
Vincent Tang

18

Nic tak naprawdę mi nie pomogło - nie mogłem nadpisać ustawień w pliku /etc/my.cnf. Szukałem więc tak, jak John sugerował https://stackoverflow.com/a/7974114/717251

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

Znalazł kolejny plik my.cnf

/usr/local/Cellar/mysql/5.6.21/my.cnf

zmiana tego pliku działała dla mnie! Nie zapomnij ponownie uruchomić agenta uruchamiania:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Aktualizacja:

Jeśli masz dość niedawną instalację homebrew, powinieneś użyć komend brew services, aby zrestartować mysql (użyj zainstalowanej wersji homebrew mysql, tj. Mysql lub mysql@5.7):

brew services stop mysql
brew services start mysql

Myślę, że możesz także biegać brew services stop mysqli brew services start mysqlzastępować launchctl unload ...linie.
mhulse

1
To prawda - ale w momencie pisania tej odpowiedzi te komendy homebrew nie były jeszcze dostępne. Zaktualizuję odpowiedź
naabster


13

Ponieważ mysql --helppokazuje listę plików, uważam, że przydatne jest ustalenie wyniku, lsaby zobaczyć, który z nich istnieje:

$ 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

W moim (zainstalowanym Homebrew) MySQL 5.7 wygląda na to, że pliki są włączone /usr/local/etc/my.cnf.


10

Na twoim typie powłoki my_print_defaults --help

Na dole wyniku powinieneś zobaczyć plik, z którego serwer odczytuje konfiguracje. Drukuje coś takiego:

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

Możesz dowiedzieć się, gdzie my.cnfplik został dostarczony przez określony pakiet, np

brew list mysql # or: mariadb

Oprócz sprawdzenia, czy plik został odczytany, możesz uruchomić:

sudo fs_usage | grep my.cnf

który pokaże aktywność systemu plików w czasie rzeczywistym związaną z tym plikiem.


4

Uważam, że odpowiedź brzmi „nie”. Instalacja jednego z ~ / .my.cnf lub / usr / local / etc wydaje się być preferowanym rozwiązaniem.


2
Tylko na moim MBP /etc/my.cnf pozwala mi wpływać na instalację mysql w Homebrew.
ewalshe

1

W przypadku Homebrew mysql szukałby również my.cnf w swoim katalogu Cellar, na przykład:

/usr/local/Cellar/mysql/5.7.21/my.cnf

W przypadku, gdy wolisz trzymać konfigurację blisko plików binarnych - stwórz my.cnftutaj, jeśli jej brakuje.

Uruchom ponownie mysql po zmianie:

brew services restart mysql

1

Wersja serwera: 8.0.19 Homebrew. macOS Catalina 10.15.5 i zainstalowany MySQL przez Homebrew. Znaleziono ten plik tutaj:

/usr/local/etc/my.cnf

To rozwiązanie pomogło :)


-1

Dla MacOS (High Sierra), MySQL, który został zainstalowany z domowym zaparzeniem.

Zwiększenie globalnych zmiennych ze środowiska mysql nie powiodło się. W takim przypadku tworzenie pliku ~ / .my.cnf jest najbezpieczniejszą opcją. Dodanie zmiennych za pomocą [mysqld] obejmie zmiany (Uwaga: jeśli zmienisz za pomocą [mysql], zmiana może nie działać).

<~ / .my.cnf> [mysqld] connect_timeout = 43200 max_allowed_packet = 2048M net_buffer_length = 512M

Uruchom ponownie serwer mysql. i sprawdź zmienne. y

sql> SELECT @@ max_allowed_packet; + ---------------------- + | @@ max_allowed_packet | + ---------------------- + | 1073741824 | + ---------------------- +

1 rząd w zestawie (0,00 s)


-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. Upuść plik my.cf do /usr/local/opt/mysql

  3. brew services restart mysql

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.