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?

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.


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

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

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.


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 mysql@5.7):

brew services stop mysql
brew services start mysql

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.


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

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.


4

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


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

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


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


-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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.