Para instalações do homebrew mysql, onde está o my.cnf? Ele instala um?
Para instalações do homebrew mysql, onde está o my.cnf? Ele instala um?
Respostas:
Não existe my.cnf por padrão. Como tal, o MySQL começa com todas as configurações padrão. Se você deseja criar seu próprio my.cnf para substituir os padrões, coloque-o em /etc/my.cnf.
Além disso, você pode executar mysql --help
e procurar nele os locais de conf listados.
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.
Como você pode ver, também existem algumas opções para ignorar os arquivos conf ou especificar outros arquivos para serem lidos quando você chamar o mysql na linha de comando.
ls $(brew --prefix mysql)/*.cnf
mysql --help | grep cnf
foi realmente mais fácil encontrar as linhas.
O mysql do homebrew contém arquivos de configuração de amostra na pasta de arquivos de suporte da instalação.
ls $(brew --prefix mysql)/support-files/my-*
Se você precisar alterar as configurações padrão, poderá usar uma delas como ponto de partida.
cp $(brew --prefix mysql)/support-files/my-default.cnf /usr/local/etc/my.cnf
Como o @rednaw aponta, uma instalação homebrew do MySQL provavelmente estará presente, /usr/local
portanto o arquivo my.cnf não deve ser adicionado à /etc
pasta do sistema , então mudei o comando para copiar o arquivo /usr/local/etc
.
Se você estiver usando o MariaDB em vez do MySQL, use o seguinte:
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/
(que eu acho padrão), você também pode inserir o my.conf
in /usr/local/etc/
, que não requer privilégios de root.
brew --prefix mariadb
. Na distribuição MariaDB o my-default.cnf
não existe - então use my-small.cnf
. Tente istocp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
Uma maneira de descobrir:
sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf
mdfind -name my.cnf
em vez de locate
comando em OSX
locate my.cnf
trabalhou diretamente. Eu não corrisudo /usr/libexec/locate.updatedb
/usr/local/Cellar/mysql/8.0.16/.bottle/etc/my.cnf
e /usr/local/etc/my.cnf
foi o que eu tenho
no meu sistema era
nano /usr/local/etc/my.cnf.default
como modelo e
nano /usr/local/etc/my.cnf
como trabalhando.
Nada realmente me ajudou - não consegui sobrescrever as configurações em um arquivo /etc/my.cnf. Então, eu procurei como John sugeriu https://stackoverflow.com/a/7974114/717251
sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf
Encontrou outro my.cnf no
/usr/local/Cellar/mysql/5.6.21/my.cnf
alterar este arquivo funcionou para mim! Não se esqueça de reiniciar o agente de inicialização:
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Atualizar:
Se você possui uma instalação bastante recente do homebrew, use os comandos brew services para reiniciar o mysql (use sua versão do homebrew mysql instalada, por exemplo, mysql ou mysql@5.7):
brew services stop mysql
brew services start mysql
brew services stop mysql
e brew services start mysql
no lugar das launchctl unload ...
linhas.
Como mysql --help
mostra uma lista de arquivos, acho útil canalizar o resultado ls
para ver quais deles existem:
$ 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
Para o meu (Homebrew instalado) MySQL 5.7, parece que os arquivos estão ativados /usr/local/etc/my.cnf
.
No seu tipo de shell my_print_defaults --help
Na parte inferior do resultado, você poderá ver o arquivo no qual o servidor lê as configurações. Imprime algo como isto:
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
Você pode encontrar onde o my.cnf
arquivo foi fornecido pelo pacote específico, por exemplo
brew list mysql # or: mariadb
Além de verificar se esse arquivo é lido, você pode executar:
sudo fs_usage | grep my.cnf
que mostrará a atividade do sistema de arquivos em tempo real relacionada a esse arquivo.
Eu acredito que a resposta é não. Instalar um em ~ / .my.cnf ou / usr / local / etc parece ser a solução preferida.
No caso do Homebrew, o mysql também procuraria my.cnf no diretório Cellar, por exemplo:
/usr/local/Cellar/mysql/5.7.21/my.cnf
Para o caso, prefere manter a configuração próxima aos binários - crie my.cnf
aqui se estiver faltando.
Reinicie o mysql após a alteração:
brew services restart mysql
Versão do servidor: 8.0.19 Homebrew. macOS Catalina 10.15.5 e instalou o MySQL via Homebrew. Encontre este arquivo aqui:
/usr/local/etc/my.cnf
Esta solução ajudou :)
Para MacOS (High Sierra), o MySQL foi instalado com o brew doméstico.
Aumentar as variáveis globais do ambiente mysql não teve êxito. Portanto, nesse caso, a criação de ~ / .my.cnf é a opção mais segura. A adição de variáveis com [mysqld] incluirá as alterações (Nota: se você alterar com [mysql], a alteração poderá não funcionar).
<~ / .my.cnf> [mysqld] connect_timeout = 43200 max_allowed_packet = 2048M net_buffer_length = 512M
Reinicie o servidor mysql. e verifique as variáveis. y
sql> SELECT @@ max_allowed_packet; + ---------------------- + | @@ max_allowed_packet | + ---------------------- + | 1073741824 | + ---------------------- +
1 linha no conjunto (0,00 s)