Respostas:
Se você estiver no Linux, inicie o 'mysqld' com strace
, por exemplo strace ./mysqld
.
Entre todas as outras chamadas do sistema, você encontrará algo como:
stat64("/etc/my.cnf", 0xbfa3d7fc) = -1 ENOENT (No such file or directory)
stat64("/etc/mysql/my.cnf", {st_mode=S_IFREG|0644, st_size=4227, ...}) = 0
open("/etc/mysql/my.cnf", O_RDONLY|O_LARGEFILE) = 3
Então, como você pode ver ... ele lista os arquivos .cnf, que ele tenta usar e finalmente usa.
ps auxf
e encontrar o comando executado para o MySQL. Normalmente, parece algo como mysqld --basedir=/usr/local/mysql ...
(observe o ... apenas significa que pode haver mais sinalizadores no comando, mas eu não vou listar tudo) Depois que você o encontrar, copie a coisa toda e desligue o MySQL. Se você estiver no Linux, é /etc/init.d/mysqld stop
ou mysqladmin -u root -p shutdown
. Em seguida, execute strace
o comando mysql que você copiou. Portanto, seria assim: #strace mysqld --basedir=/usr/local/mysql
open(...
linha. Em vez disso, tenho 4 linhas que terminam com = -1 Err#2
. Como você sabe agora qual arquivo está carregado?
sudo dtruss mysqld 2>&1|grep my.cnf
@mgPePe, essa saída provavelmente significa que nenhum dos arquivos foi encontrado e nenhum foi aberto.
Extraído do fantástico livro "High Performance MySQL" O'Reilly:
$ which mysqld
/usr/sbin/mysqld
$ /usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"
Default options are read from the following files in the given order:
/etc/mysql/my.cnf ~/.my.cnf /usr/etc/my.cnf
!includedir
. Estou tentando descobrir por que a !includedir
diretiva no meu /etc/mysql/my.cnf
arquivo não está funcionando.
mysqld
com o caminho completo ?!
Se você executar, mysql --verbose --help | less
ele informará sobre a linha 11 quais .cnf
arquivos serão procurados.
Você também pode fazer mysql --print-defaults
para mostrar como os valores de configuração serão usados. Isso também pode ser útil para identificar apenas qual arquivo de configuração está sendo carregado.
mysqld
vez demysql
mysqld --print-defaults
, deu-me exatamente o que eu queria quando pesquisei essa pergunta no Google.
Estou no Windows e instalei a versão mais recente da comunidade MySQL 5.6
O que fiz para ver qual arquivo de configuração usa foi acessar Ferramentas Administrativas> Serviços> MySQL56> Clique com o botão direito do mouse> Propriedades e verifique o caminho do executável:
"C: / Arquivos de programas / MySQL / MySQL Server 5.6 / bin \ mysqld" --defaults-file = "C: \ ProgramData \ MySQL \ MySQL Server 5.6 \ my.ini" MySQL56
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
por padrão.
Uma alternativa é usar
mysqladmin variables
mysqld --help --verbose é perigoso. Você pode sobrescrever facilmente o pidfile para a instância em execução! use-o com --pid-file = XYZ
Ah, e você realmente não pode usá-lo se tiver mais de uma instância em execução. Apenas mostrará o valor padrão.
Artigo muito bom sobre isso:
Acabei de fazer um teste rápido no ubuntu:
instalou o mysql-server, que criou /etc/mysql/my.cnf
mysqld --verbose --help | grep -A 1 "Opções padrão"
110112 13:35:26 [Nota] O plug-in 'FEDERATED' está desativado.
As opções padrão são lidas nos seguintes arquivos na ordem especificada: /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~ / .my.cnf
criado /etc/my.cnf e /usr/etc/my.cnf, cada um com um número de porta diferente
mysql reiniciado - estava usando o número da porta definido em /usr/etc/my.cnf
Enquanto isso, também encontrei a opção --defaults-file no mysqld. Se você especificar um arquivo de configuração, apenas ele será usado, independentemente do que é retornado por / usr / sbin / mysqld --verbose --help | grep -A 1 "Opções padrão"
Achei isso realmente útil:
Control Panel -> Administration Tools
Properties
Path to executable
veja se ele contém o caminho para omy.ini/my.cfg
Alguns servidores têm várias versões do MySQL instaladas e configuradas. Verifique se você está lidando com a versão correta executando com um comando Unix de:
ps -ax | grep mysql
Para pessoas que executam o servidor windows com o mysql como um serviço, uma maneira fácil de descobrir qual arquivo de configuração você está executando é abrir o painel de controle de serviços, encontrar o serviço mysql (no meu caso 'MYSQL56'), clicar com o botão direito do mouse e clicar em Propriedades. . Então, a partir daqui, você pode verificar o "Caminho para o executável", que deve ter uma defaults-file
opção que aponte para onde está o seu arquivo de configuração.
Se você estiver no Windows, poderá usar o procmon Sysinternals . Abra-o e defina as configurações de filtro como esta e clique em "Adicionar". Agora procmon irá monitorar o mysqld.
Agora inicie seu servidor mysql normalmente. O Procmon irá capturar as operações em segundo plano do mysql. Pesquise "meu". no painel de resultados do procmon e você encontrará algo como o seguinte:
É claro que o mysql pesquisa uma lista de arquivos de configuração por sua vez. No meu caso, foi encontrado com C:\mysql-5.7.19-winx64\my.cnf
sucesso, por isso está usando este.