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.
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.
Respostas:
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ê:
my.cnfarquivo que você está editando viamysql --verbose --help | grep my.cnf
No caso do Mac OS X Maverick, quando o MySQL é instalado via Homebrew, ele está localizado em /usr/local/opt/mysql/my.cnf
/usr/local/mysql/etc. Estou no High Sierra, mas ele foi instalado algumas versões atrás.
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 - GlobalSYSCONFDIR/my.cnf - Global
SYSCONFDIRrepresenta o diretório especificado com aSYSCONFDIRopção paraCMakequando 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 omy.cnfarquivo específico do servidor reside. SeMYSQL_HOMEnão estiver definido e você iniciar o servidor usando omysqld_safeprograma,mysqld_safedefina-o comoBASEDIRo 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.
Corre: sudo fs_usage | grep my.cnf
Isso relatará qualquer atividade do sistema de arquivos em tempo real relacionada a esse arquivo.
Em outro terminal, reinicie o MySQL / MariaDB, por exemplo
brew services restart mysql
ou:
brew services restart mariadbNo 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.
sudo fs_usage | grep my.cnfmétodo é bastante eficiente. Eu encontrei este arquivo na pasta: /usr/local/etc/my.cnf
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!
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:
/etc/my.cnf/etc/mysql/my.cnfSYSCONFDIR/my.cnf$MYSQL_HOME/my.cnfdefaults-extra-file(o arquivo especificado com --defaults-extra-file=path, se houver)~/.my.cnfPara 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
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
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.
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>
/etc/my.cnf
Você pode abrir um terminal e digitar locate my.cnf
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.
locate my.cnfno seu terminal. qual o resultado?
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:
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
~/.my.cnf. Adicione um ponto antes do nome do arquivo.
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.
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
É 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 .:
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 '%\/%';
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
Se você precisar de um exemplo de referência detalhado, my.cnf:
Nenhuma afiliação / associação aos URLs
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)
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.
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
/private/etc/my.cnf para Catalina
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
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.
Para Mac, o que funcionou para mim é criar um arquivo .my.cnf no meu ~ path. Espero que isto ajude.
Copie /usr/local/opt/mysql/support-files/my-default.cnf como /etc/my.cnf ou /etc/mysql/my.cnf e reinicie o mysql.
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.
/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.
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
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.
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.