Para instalações do homebrew mysql, onde está o my.cnf?

293

Para instalações do homebrew mysql, onde está o my.cnf? Ele instala um?

chrismealy
fonte

Respostas:

263

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

Jericon
fonte
49
Isso não parece mais ser o caso; Eu vejo um arquivo my.cnf no /usr/local/Cellar/mysql/5.6.15/ (ou qualquer versão que você instalou)
William Turrell
6
@williamt "mysql --help" não lista esse arquivo como sendo usado, eu acho que é apenas um padrão que vem com os arquivos de instalação
Vinicius Pinto
2
Estou no 5.6.26 e não o vejo lá.
Adam Grant
3
A partir de 5.6.26, pode ser lolcated executando: ls $(brew --prefix mysql)/*.cnf
danielgpm 12/01
23
mysql --help | grep cnffoi realmente mais fácil encontrar as linhas.
vinyll
267

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/localportanto o arquivo my.cnf não deve ser adicionado à /etcpasta 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
ewalshe
fonte
4
sudo cp $(brew --prefix mysql)/support-files/my-default.cnf /etc/my.cnf
quer
7
Se o Homebrew instalou o MySQL no /usr/local/(que eu acho padrão), você também pode inserir o my.confin /usr/local/etc/, que não requer privilégios de root.
Gitaarik # 8/15
1
brew --prefix mysql não fornece o caminho correto; para mim, mostra '/usr/local/Cellar/mysql/5.7.16', mas, de fato, o mariadb está instalado em '/ usr / local / opt / mariadb /'
Zhaozhi
@zhaozhi Use brew --prefix mariadb. Na distribuição MariaDB o my-default.cnfnão existe - então use my-small.cnf. Tente istocp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
ewalshe
Essa precisa ser a resposta aceita. O primeiro está incorreto. A pergunta feita estava relacionada ao homebrew.
BugHunterUK
30

Uma maneira de descobrir:

sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf
John Bachir
fonte
4
Resposta incrível, eu aprendi sobre o local.updatedb. No entanto, por padrão, não há arquivo de configuração, veja a resposta abaixo
glebm 1/12/12
15
Você pode usar mdfind -name my.cnfem vez de locatecomando em OSX
JacopKane
Para mim locate my.cnftrabalhou diretamente. Eu não corrisudo /usr/libexec/locate.updatedb
Andru
1
/usr/local/Cellar/mysql/8.0.16/.bottle/etc/my.cnfe /usr/local/etc/my.cnf foi o que eu tenho
Vincent Tang
18

no meu sistema era

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

como modelo e

nano /usr/local/etc/my.cnf

como trabalhando.

Fusca Software
fonte
18

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 [email protected]):

brew services stop mysql
brew services start mysql
naabster
fonte
Eu acho que você também pode executar brew services stop mysqle brew services start mysqlno lugar das launchctl unload ...linhas.
Mhulse
1
Isso é verdade - mas no momento em que escrevemos essa resposta, esses comandos de homebrew ainda não estavam disponíveis. Vou atualizar a resposta
naabster 19/03/19
13

Como mysql --helpmostra uma lista de arquivos, acho útil canalizar o resultado lspara 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.

Emil Stenström
fonte
10

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
Luis Lasser
fonte
5

Você pode encontrar onde o my.cnfarquivo 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.

kenorb
fonte
4

Eu acredito que a resposta é não. Instalar um em ~ / .my.cnf ou / usr / local / etc parece ser a solução preferida.

chrismealy
fonte
2
No meu MBP, apenas o /etc/my.cnf me permite afetar a instalação Homebrew do mysql.
ewalshe
1

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.cnfaqui se estiver faltando.

Reinicie o mysql após a alteração:

brew services restart mysql
Andrey
fonte
1

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

Connor Leech
fonte
-1

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)

lyxProtein
fonte
-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. Solte seu arquivo my.cf em /usr/local/opt/mysql

  3. brew services restart mysql

BiN
fonte