Gdzie jest plik my.cnf dla instalacji homebrew mysql? Czy to instaluje?
Gdzie jest plik my.cnf dla instalacji homebrew mysql? Czy to instaluje?
Odpowiedzi:
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 --help
i 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ń.
ls $(brew --prefix mysql)/*.cnf
mysql --help | grep cnf
łatwiej było znaleźć linie.
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/local
więc plik my.cnf nie powinien być dodawany do /etc
folderu 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
sudo cp $(brew --prefix mysql)/support-files/my-default.cnf /etc/my.cnf
/usr/local/
(myślę, że jest to domyślny), możesz również umieścić go my.conf
w /usr/local/etc/
, który nie wymaga uprawnień roota.
brew --prefix mariadb
. W dystrybucji MariaDB my-default.cnf
nie istnieje - użyj my-small.cnf
. Spróbuj tegocp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
Jednym ze sposobów, aby dowiedzieć się:
sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf
mdfind -name my.cnf
zamiast locate
komendy w OSX
locate my.cnf
pracował bezpośrednio. Nie sudo /usr/libexec/locate.updatedb
/usr/local/Cellar/mysql/8.0.16/.bottle/etc/my.cnf
i /usr/local/etc/my.cnf
właśnie to dostałem
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
brew services stop mysql
i brew services start mysql
zastępować launchctl unload ...
linie.
w moim systemie było
nano /usr/local/etc/my.cnf.default
jako szablon i
nano /usr/local/etc/my.cnf
jak działa.
Ponieważ mysql --help
pokazuje listę plików, uważam, że przydatne jest ustalenie wyniku, ls
aby 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
.
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
Możesz dowiedzieć się, gdzie my.cnf
plik 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.
Uważam, że odpowiedź brzmi „nie”. Instalacja jednego z ~ / .my.cnf lub / usr / local / etc wydaje się być preferowanym rozwiązaniem.
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.cnf
tutaj, jeśli jej brakuje.
Uruchom ponownie mysql po zmianie:
brew services restart mysql
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 :)
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)