Local do arquivo my.cnf no macOS

185

Estou tentando seguir este tutorial para habilitar o acesso remoto ao MySQL. O problema é: onde o my.cnfarquivo deve estar localizado? Estou usando o Mac OS X Lion.

Nicolas
fonte
Eu acho que isso pertence ao serverfault.com. Mas ainda assim, seja bem-vindo ao SO!
Artefact2

Respostas:

253

Este tópico no fórum MySQL diz:

Por padrão, a instalação do OS X não usa um my.cnf e o MySQL apenas usa os valores padrão. Para configurar o seu próprio my.cnf, você pode simplesmente criar um arquivo direto no / etc.

O OS X fornece exemplos de arquivos de configuração em /usr/local/mysql/support-files/.

E se você não conseguir encontrá-los lá, o MySQLWorkbench pode criá-los para você:

  1. Abrindo uma conexão
  2. Selecionando o 'Arquivo de Opções' em 'INSTÂNCIA' no menu.
  3. O MySQLWorkbench procurará por my.cnf e, se não conseguir encontrá-lo, criará para você
bfavaretto
fonte
14
Pelo menos o pacote MySQL atual para Mac OS X (mysql-5.6.17-osx10.7-x86_64 no momento da redação deste texto) faz , de facto, criar e usar um my.cnf. Ele está localizado em /usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
Jpsy
104
você pode querer garantir que o MySQL é realmente carregar em qualquer my.cnfarquivo que você está editando viamysql --verbose --help | grep my.cnf
ryantuck
3
No Mac OS Sierra, ele ainda não estava configurado. Eu tive que copiar /usr/local/mysql/support-files/my-default.cnf para my.cnf no mesmo diretório. Note que o mysql está vinculado ao pacote, no meu caso mysql-5.7.17-macos10.12-x86_64.
Christia
17
Acabei de fazer uma instalação limpa do MySQL 5.7.19 no Mac OS 10.12 usando o .dmg do dev.mysql.com. Não há my.cnf em nenhum dos lugares em que o mysql --help diz que está. E não há my-default.cnf em / usr / local / mysql / support-files / ou em qualquer outro lugar que encontrei. Acontece que "no MySQL 5.7.18, o my-default.cnf não é mais incluído ou instalado pelos pacotes de distribuição" .
22817 Chris Bartley
2
Esta resposta é antiga e depende de qual instalador você usou para instalar o mysql. O Homebrew coloca em um lugar, o instalador do dmg coloca em outro
slashdottir
79

No caso do Mac OS X Maverick, quando o MySQL é instalado via Homebrew, ele está localizado em /usr/local/opt/mysql/my.cnf

Eigengrau
fonte
6
que é /usr/local/Cellar/yourMySqlVersion/my.cnf
m02ph3u5
/ usr / local / opt / mariadb / VERSIONNUMBER / no meu caso, o MariaDB está instalado
Steven Lizarazo
9
O meu é em /usr/local/etc/my.cnf
Steve Tauber
1
O meu era /usr/local/mysql/etc. Estou no High Sierra, mas ele foi instalado algumas versões atrás.
21918 Joshua Pinter
você é um salva-vidas
Ishan Srivastava
56

Em geral, nos sistemas Unix e Unix, os programas MySQL / MariaDB leem os arquivos de configuração / inicialização nos seguintes locais (na ordem especificada):

  • /etc/my.cnf - Global
  • /etc/mysql/my.cnf - Global
  • SYSCONFDIR/my.cnf - Global

    SYSCONFDIRrepresenta o diretório especificado com a SYSCONFDIRopção para CMakequando o MySQL foi construído. Por padrão, este é o diretório etc localizado no diretório de instalação compilado.

  • $MYSQL_HOME/my.cnf - Específico do servidor (somente servidor)

    MYSQL_HOMEé uma variável de ambiente que contém o caminho para o diretório em que o my.cnfarquivo específico do servidor reside. Se MYSQL_HOMEnão estiver definido e você iniciar o servidor usando o mysqld_safeprograma, mysqld_safedefina-o como BASEDIRo diretório de instalação base do MySQL.

  • arquivo especificado com --defaults-extra-file=pathse houver

  • ~/.my.cnf - Específico do usuário
  • ~/.mylogin.cnf - Específico do usuário (somente clientes)

Fonte: Usando arquivos de opções .

Nota: Nas plataformas Unix, o MySQL ignora os arquivos de configuração que podem ser gravados no mundo. Isso é intencional como uma medida de segurança.


Além disso, no Mac, existe uma maneira simples de verificar isso.

  1. Corre: sudo fs_usage | grep my.cnf

    Isso relatará qualquer atividade do sistema de arquivos em tempo real relacionada a esse arquivo.

  2. Em outro terminal, reinicie o MySQL / MariaDB, por exemplo

    brew services restart mysql

    ou:

    brew services restart mariadb
  3. No terminal com fs_usage, o local correto deve ser mostrado, por exemplo

    15:52:22  access            /usr/local/Cellar/mariadb/10.1.14/my.cnf                                         0.000002   sh          

    Portanto, se o arquivo não existir, crie um.

kenorb
fonte
6
Obrigado! o sudo fs_usage | grep my.cnfmétodo é bastante eficiente. Eu encontrei este arquivo na pasta: /usr/local/etc/my.cnf
gary
3
Ótimo método, no entanto eu recebo vários resultados lá: private/etc/my.cnf, /usr/local/etc/my.cnf, /usr/local/Cellar/mysql/<myVersion>/my.cnf, ~.my.cnfcom my_print_defna coluna mais à direita. Depois de um tempo, é apenas /usr/local/etc/my.cnfcom o meu terminal na coluna mais à direita. Mas todos esses my.cnfarquivos não existem!
187 Andru
@ Andru Se nenhum deles existir, crie um novo.
kenorb
1
Seu último conjunto de instruções re sudo fs_usage | grep my.cnf foi a única coisa que me ajudou nesta página, pois, por algum motivo desconhecido, o mysqld não estava carregando nos locais padrão listados via mysql -?
Redbirdo 10/09/19
1
Esse comando sudo fs_usage | grep my.cnf salvou meu dia, obrigado milhão.
Shashikant Soni 15/01
33

Não sei qual versão do MySQL você está usando, mas aqui estão os locais possíveis do arquivo my.cnf para a versão 5.5 (retirada daqui ) no Mac OS X:

  1. /etc/my.cnf
  2. /etc/mysql/my.cnf
  3. SYSCONFDIR/my.cnf
  4. $MYSQL_HOME/my.cnf
  5. defaults-extra-file(o arquivo especificado com --defaults-extra-file=path, se houver)
  6. ~/.my.cnf
Jeffrey Chung
fonte
21

Para o MySQL 5.7 no Mac OS X El Capitan: /usr/local/mysql/etc/my.cnf

Copiar conf padrão de /usr/local/mysql/support-files/my-default.cnf

Sergio Rodrigues
fonte
4
Só para ficar claro, você tem que criar "etc /" pasta si mesmo e você precisa de privilégios de root para isso "sudo su -"
trojan
Não foi encontrado nesse local para mim. Estou usando o MAMP
Mirza Vu
@mirzavu, consulte este link: stackoverflow.com/questions/678645/…
Sergio Rodrigues
21

Se você estiver usando o macOS Sierra e o arquivo não existir, execute

mysql --help or mysql --help | grep my.cnf

para ver os locais possíveis e a sequência de carregamento / leitura do my.cnf para mysql, crie o arquivo my.cnf em um dos diretórios sugeridos e adicione a seguinte linha

[mysqld] sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Você pode sudo touch /{preferred-path}/my.cnfeditar o arquivo para adicionar o modo sql,

sudo nano /{preferred-path}/my.cnf

Então reinicie o mysql, pronto, você está pronto. codificação feliz

Gpak
fonte
13

O pacote atual do MySQL para o Mac OS X Mavericks (mysql-5.6.17-osx10.7-x86_64 no momento da redação deste documento) cria automaticamente um my.cnf durante a instalação.

Está localizado em /usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
Adapte seu caminho de acordo com sua versão.

Jpsy
fonte
12

Então, nenhuma dessas coisas funcionou para mim. Estou usando a instalação dmg atual do mysql community server. O ps mostra que todos os parâmetros mais críticos normalmente em my.cnf são transmitidos na linha de comando, e eu não conseguia descobrir de onde isso vinha. Depois de fazer uma pesquisa de texto completo da minha caixa, encontrei-a em:

/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

Assim, você pode alterá-los ou removê-los para que ele respeite os que você tem no my.cnf, onde quer que você decida colocá-lo.

Aproveitar!

Exemplo das informações do arquivo encontradas nesse arquivo:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>             <string>com.oracle.oss.mysql.mysqld</string>
    <key>ProcessType</key>       <string>Interactive</string>
    <key>Disabled</key>          <false/>
    <key>RunAtLoad</key>         <true/>
    <key>KeepAlive</key>         <true/>
    <key>SessionCreate</key>     <true/>
    <key>LaunchOnlyOnce</key>    <false/>
    <key>UserName</key>          <string>_mysql</string>
    <key>GroupName</key>         <string>_mysql</string>
    <key>ExitTimeOut</key>       <integer>600</integer>
    <key>Program</key>           <string>/usr/local/mysql/bin/mysqld</string>
    <key>ProgramArguments</key>
        <array>
            <string>/usr/local/mysql/bin/mysqld</string>
            <string>--user=_mysql</string>
            <string>--basedir=/usr/local/mysql</string>
            <string>--datadir=/usr/local/mysql/data</string>
            <string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
            <string>--log-error=/usr/local/mysql/data/mysqld.local.err</string>
            <string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
             <string>--keyring-file-data=/usr/local/mysql/keyring/keyring</string>
             <string>--early-plugin-load=keyring_file=keyring_file.so</string>

        </array>
    <key>WorkingDirectory</key>  <string>/usr/local/mysql</string>
</dict>
</plist>
Datbates
fonte
ótimo! você salvou meu dia.
Jenny #
Eu tive o mesmo caso, mas eu também tive que adicionar my.cnf arquivo para/etc/my.cnf
Eduard Mukans
11

Você pode abrir um terminal e digitar locate my.cnf

sreimer
fonte
Desculpe por não ser suficientemente específico, aparentemente eu preciso copiar 'my-large.cnf' para alguma pasta e renomeá-lo como 'my.cnf'. Mas eu não sei de onde ..
nicolas
1
Além disso, você precisa ter um banco de dados de localização preenchido. no Mac OSX: sudo carga launchctl -w /System/Library/LaunchDaemons/com.apple.locate.plist
arcseldon
10

No mysql 5.6.22, que eu instalei no Homebrew, o caminho do my.cnf é

/usr/local/opt/mysql/my.cnf 
StevenR
fonte
10

macOs sierra 10.12.6 versão mysql: 5.7.18_1 Eu corro localize my.cnf e o caminho é

/usr/local/etc/my.cnf

espero que ajude.

aginanjar
fonte
considerar a adição de explicação para o seu asnwer
Inder
@ charles.cc.hsu: tente usar o comando locate my.cnfno seu terminal. qual o resultado?
aginanjar 16/01
6

Você pode criar seu arquivo em qualquer diretório que desejar. Após a criação, você pode "dizer" o caminho para a configuração do mysql:

insira a descrição da imagem aqui

Shedom Wei
fonte
6

Você pode verificar o arquivo

/usr/local/bin/mysql.servere ver de onde my.confestá sendo lido.

Geralmente é de /etc/my.cnfou ~/my.cnfou~/.my.cnf

Vazgen Manukyan
fonte
Correção: ~/.my.cnf. Adicione um ponto antes do nome do arquivo.
indefinido
5

Para o MAMP 3.5 Mac El Capitan, crie um arquivo de configuração vazio separado e escreva suas configurações adicionais para o mysql

sudo vim /Applications/MAMP/Library/my.cnf

E adicionar assim

[mysqld]
max_allowed_packet = 256M
Mirza Vu
fonte
5

Abra o Terminal e use o comando abaixo:

sudo find / -name my.cnf
user33670
fonte
4

LEIA OS DOCS!

Os documentos do MySQL para a versão que você está usando ajudarão. Geralmente é descrito como um Options Fileou MySQL Config File.
Os documentos têm a localização desses arquivos na documentação, além de outras VITALinformações, como a localização e pequenos exemplos de como o arquivo de configuração deve ser.

Versão 8 do MySQL

MySQL Versão 5.7

MySQL Versão 5.6

MySQL Versão 5.5

MySQL Versão 5.6 Japonês

Anotações importantes:

Nas plataformas Unix, o MySQL ignora os arquivos de configuração que podem ser gravados no mundo.

Isso é intencional como uma medida de segurança.

Em outras palavras, se você tiver as permissões erradas definidas no seu arquivo de configuração, NÃO será carregado.

Exemplo de permissão de configuração inicial de um dos arquivos de configuração:

RIZZOMBP$ ls -lah /etc/my.cnf
-rw-r--r--  1 myusername  wheel     0B Feb 25 20:40 /etc/my.cnf

Nota:

É possível usar !includediretivas nos arquivos de opções para incluir outros arquivos de opções e !includedirprocurar diretórios específicos por arquivos de opções ...

... O MySQL não garante a ordem na qual os arquivos de opções no diretório serão lidos ...

Quaisquer arquivos a serem encontrados e incluídos usando a diretiva! Includedir nos sistemas operacionais Unix devem ter nomes de arquivos terminados em .cnf. No Windows, esta diretiva verifica se há arquivos com a extensão .iniou .cnf.

Exemplos de como encontrar sua localização nos arquivos de configuração ou log ect .:

SQL

Isso não mostra o arquivo de configuração, mas ajuda a localizar os arquivos / pastas de instalação.

MySQL Versão 5.7 e 8+

SELECT * FROM PERFORMANCE_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_VALUE LIKE '%\/%';

Versão do MySQL <= 5.6

SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_VALUE LIKE '%\/%';

SHELL / Terminal

RIZZOMBP$ mysql --help | grep "Default options" -A 1

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

Crédito acima do comando: Erwin Mayer do ServerFault

RIZZOMBP$ mysqld --verbose --help | grep '/my.cnf' -B 1

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

OU

RIZZOMBP$ ps aux | grep -i mysqld | grep -v $USER

_mysql 106 0.4 2.5 4232336 422112 ?? Ss 7:01PM 0:57.12
/usr/local/mysql/bin/mysqld
--user=_mysql
--basedir=/usr/local/mysql
--datadir=/usr/local/mysql/data
--plugin-dir=/usr/local/mysql/lib/plugin
--log-error=/usr/local/mysql/data/mysqld.local.err
--pid-file=/usr/local/mysql/data/mysqld.local.pid
--keyring-file-data=/usr/local/mysql/keyring/keyring
--early-plugin-load=keyring_file=keyring_file.so

Arquivo de exemplo

Se você precisar de um exemplo de referência detalhado, my.cnf:

  1. https://gist.github.com/search?utf8=%E2%9C%93&q=my.cnf+mysql&ref=searchresults
  2. https://www.linode.com/community/questions/5749/mysql-sample-config-files
  3. https://www.fromdual.com/mysql-configuration-file-sample

Nenhuma afiliação / associação aos URLs

Meu sistema:

RIZZOMBP$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.3
BuildVersion:   18D109
RIZZOMBP$ mysql -V
mysql  Ver 8.0.15 for macos10.14 on x86_64 (MySQL Community Server - GPL)
RIZZOMBP$ mysqld -V
/usr/local/mysql-8.0.15-macos10.14-x86_64/bin/mysqld 
Ver 8.0.15 for macos10.14 on x86_64 (MySQL Community Server - GPL)
JayRizzo
fonte
mysql --help | grep "Opções padrão" -A 1. isso ajudou.
Wandermonk
4

Estou executando o MacOS Catalina (10.15.3) e localizo my.cnfem /usr/local/etc.

Runstone
fonte
2

Fiz o check-in no macOS Sierra, o homebrew instalado MySql 5.7.12

Os arquivos de suporte estão localizados em

/usr/local/opt/mysql/support-files

Basta copiar my-default.cnfcomo /etc/my.cnfou /etc/mysql/my.cnfe a configuração será selecionada na reinicialização.

attaboyabhipro
fonte
4
Acabei de instalar o 5.7.18 no 12.12.4 via homebrew e eles não estão lá.
norman_h
2

macOS High Sierra versão 10.13.6

mysql Ver 14.14 Distrib 5.7.22, para osx10.13 (x86_64) usando o wrapper EditLine Copyright (c) 2000, 2018, Oracle e / ou suas afiliadas. Todos os direitos reservados

As opções padrão são lidas nos seguintes arquivos na ordem especificada:

/etc/my.cnf 
/etc/mysql/my.cnf 
/usr/local/etc/my.cnf 
~/.my.cnf
Ayoub Palangi
fonte
2

/private/etc/my.cnf para Catalina

Mac L. Lak
fonte
1

Estou usando o mysql versão 5.7.17 no macOS High Sierra versão 10.13.3 e encontrei o arquivo de configuração do mysql aqui.

cd /usr/local/mysql/support-files/my-default.cnf
Reaz Murshed
fonte
Obrigado pela dica sobre como encontrar o arquivo de configuração padrão. Note, este é apenas um arquivo de modelo assim que você vai querer copiar este para um local encontrado em mysql --verbose --help | grep my.cnfonde ele vai apanhados, como por:DO NOT EDIT THIS FILE. It's a template which will be copied to the default location during install, and will be replaced if you upgrade to a newer version of MySQL.
Joshua Pinter
1

normalmente deve estar /usr/local/etcno mac, se você não encontrar, pode criar um

Pravin
fonte
0

Para Mac, o que funcionou para mim é criar um arquivo .my.cnf no meu ~ path. Espero que isto ajude.

Raman Singh
fonte
0

Copie /usr/local/opt/mysql/support-files/my-default.cnf como /etc/my.cnf ou /etc/mysql/my.cnf e reinicie o mysql.

Nguyen Thanh Tung
fonte
0

Para mim na versão serra

copie a configuração padrão em:

/usr/local/Cellar/mysql/5.6.27/support-files/my-default.cnf

para

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

iamroald
fonte
0

No meu caso, o arquivo não existia. No MySQL Workbench, fui para OPTIONS FILE e encontrei alguns valores padrão. Eu cliquei em aplicar. Ele pediu permissão. Em seguida, ele criou o arquivo my.cnf em / etc. No entanto, é muito importante lembrar que, na primeira vez em que você clica em "Aplicar", não faz alterações na configuração padrão. Depois que o arquivo for criado, você poderá fazer alterações que serão aplicadas quando clicar em "Aplicar". Caso contrário, não será mostrado o botão aplicar ao fazer alterações.

Sameer Khanal
fonte
Eu tenho um arquivo de opções, /etc/mysql/my.cnfmas o MySQL Workbench não está ciente disso. Em vez disso, reclama que o arquivo de configuração com um caminho vazio não pode ser encontrado e, em seguida, oferece a criação de um novo arquivo.
Alan Snyder
0

Após a versão 5.7.18 do MySQL, ele não fornece o arquivo de configuração padrão no diretório support-files. Portanto, você pode criar o arquivo my.cnf manualmente no local onde o MySQL irá ler, como /etc/mysql/my.cnf, e adicionar a configuração que deseja adicionar ao arquivo.

Eawaun
fonte
0

As opções de rDefault são lidas nos seguintes arquivos na seguinte ordem: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~ / .my.cnf

Mayank Raipure
fonte
0

Estou executando o MacOS Mojave (10.14.6) e para que o MySQL reconheça meu arquivo de configuração, tive que colocá-lo em /usr/local/mysql-5.7.26-macos10.14-x86_64/etc/my.cnf. Também tenho um link simbólico apontando para /usr/local/@mysql/etc/my.cnf.

Eu estava tentando desativar sql_mode = only_full_group_by e definir essa opção no arquivo de configuração era a única maneira de conseguir que a configuração persistisse nas sessões. O conteúdo do arquivo de configuração é:

[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION

Estou usando a instalação nativa do MySQL, não o Homebrew configurado.

adjwilli
fonte
0

Para o mysql 8.0.19, finalmente encontrei o my.cnf aqui: /usr/local/opt/mysql/.bottle/etc Copiei-o para / usr / local / opt / mysql / e o modifiquei. Então eu reinicio o serviço mysql, ele funciona.

civic.LiLister
fonte