no ubuntu, você pode usar o comando locate my.cnfpara descobrir onde estão todos esses nomes de arquivos
evilReiko
Respostas:
571
Não há nenhum comando interno do MySQL para rastrear isso, é um pouco abstrato demais. O arquivo pode estar em 5 (ou mais?) Locais e todos eles são válidos porque carregam em cascata.
/etc/my.cnf
/etc/mysql/my.cnf
$ MYSQL_HOME / my.cnf
[datadir] /my.cnf
~ / .my.cnf
Esses são os locais padrão que o MySQL analisa. Se encontrar mais de um, ele carregará cada um deles e os valores se substituirão (na ordem listada, eu acho). Além disso, o --defaults-fileparâmetro pode substituir a coisa toda, então ... basicamente, é uma enorme dor no traseiro.
Mas, graças ao fato de ser tão confuso, há uma boa chance de estar no /etc/my.cnf.
(se você quiser apenas ver os valores:, SHOW VARIABLESmas precisará das permissões para fazer isso.)
Certifique-se de reiniciar o servidor MySQL após a edição my.cnf: /etc/init.d/mysqld restart.
Danijel
4
For me (AWS EC2 Ubuntu), my.cnfestá localizado em /etc/mysql/my.cnf.
SparkAndShine
58
Corra mysql --helpe você verá 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
Hanxue
2
no meu caso, havia um link simbólico etc/mysql/my.cnfapontando para outro link simbólico /etc/alternatives/my.cnfque aponta para etc/mysql/mysql.cnf.
Martin Schneider
3
ls /etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
Joshua Robinson
194
Você pode realmente "solicitar" ao MySQL uma lista de todos os locais onde ele procura por my.cnf (ou my.ini no Windows). Porém, não é uma consulta SQL. Em vez disso, execute:
$ mysqladmin --help
ou anterior 5.7:
$ mysqld --help --verbose
Nas primeiras linhas, você encontrará uma mensagem com uma lista de todos os locais my.cnf que ele procura. Na minha máquina é:
Default options are readfrom the following files in the given order:/etc/my.cnf
/etc/mysql/my.cnf
/usr/etc/my.cnf
~/.my.cnf
Ou, no Windows:
Default options are readfrom the following files in the given order:
C:\Windows\my.ini
C:\Windows\my.cnf
C:\my.ini
C:\my.cnf
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
C:\Program Files\MySQL\MySQL Server 5.5\my.cnf
Observe, no entanto, que pode ser que não exista arquivo my.cnf em nenhum desses locais . Portanto, você pode criar o arquivo por conta própria - use um dos arquivos de configuração de amostra fornecidos com a distribuição MySQL (no Linux - veja os /usr/share/mysql/*.cnfarquivos e use o que for apropriado para você - copie-o /etc/my.cnfe modifique-o conforme necessário).
Além disso, observe que também há uma opção de linha de comando--defaults-file que pode definir o caminho personalizado para o arquivo my.cnf ou my.ini. Por exemplo, este é o caso do MySQL 5.5 no Windows - aponta para um arquivo my.ini no diretório de dados, que normalmente não está listado mysqld --help --verbose. No Windows - consulte as propriedades do serviço para descobrir se esse é o seu caso.
Parecia promissor, mas na minha distribuição (opencsw.org), não existe o mysqld. Ele roda mysqld_safe. "mysqld_safe --verbose --help" não é reconhecido.
Lawrence I. Siden 28/03/12
quando o executei, obtive o seguinte: Default options are read from the following files in the given order: /etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf - esperava os 2 primeiros arquivos na ordem inversa.
yitwail
As informações postadas por mysqld --help --verbosecontradizem o que está indicado em dev.mysql.com/doc/refman/5.5/en/option-files.html . Na minha experiência "recente até hoje" com a versão 5.6, as informações no site são as mais corretas e relevantes. A prioridade do local dos arquivos fornecida pelo comando help é enganosa e levará a resultados negativos.
amateur barista
No meu antigo Fedora foi mysql --help --verbose
Danny Schoemann
11
Observe que eu tive que aumentar o tamanho do buffer do cmd para 3000 para poder realmente ver as primeiras linhas; caso contrário, o texto foi simplesmente substituído. Quando eles dizem "verboso", aparentemente, eles querem dizer isso.
É a maneira mais difícil :( Existe algum comando mysql como o phpinfo () para saber o local do arquivo de configuração?
robinmag
find / -name my.cnfé a sua melhor aposta, mas você também pode verificar o seu diretório home e /etc/mysql/my.conf Você também pode ver se o seu MYSQL_HOME é definido digitando echo $MYSQL_HOMEem um terminal
Dyllon
11
Uau, isso levaria uma eternidade na maioria das máquinas. A maioria dos linuxes modernos tem o install instalado e, desde que o updatedb seja executado regularmente, você pode: a: localizar my.cnf | menos
Dark Castle
6
Isso mostra apenas quais arquivos são nomeados my.cnf. Ele não diz qual no processo mysqld encontrado e aberto.
Lawrence I. Siden 28/03/12
3
Isso não foi encontrado ~/.my.cnf- observe o ponto inicial no nome do arquivo. A execução de uma descoberta em todo o sistema de arquivos geralmente gera dezenas de erros de "Permissão negada", a menos que você seja root. Portanto, o comando find deve ser find / -name '*my.cnf' 2>/dev/null.
A grande mina estava em /etc/mysql/my.cnf no Ubuntu 12.0.1 no EC2
Maziyar
11
whereisnão vai funcionar aqui; ele procura os locais correspondentes a um comando e não consegue encontrar arquivos arbitrários.
Mark Amery
11
E updatedb para atualizar a lista localizar atravessa - se my.cnf não foi indexado
WoodyDRN
23
Isso pode funcionar:
strace mysql ";"2>&1| grep cnf
na minha máquina isso gera:
stat64("/etc/my.cnf",0xbf9faafc)=-1 ENOENT (No such fileor directory)
stat64("/etc/mysql/my.cnf",{st_mode=S_IFREG|0644, st_size=4271,...})=0open("/etc/mysql/my.cnf", O_RDONLY|O_LARGEFILE)=3read(3,"# /etc/mysql/my.cnf: The global "...,4096)=4096
stat64("/home/xxxxx/.my.cnf",0xbf9faafc)=-1 ENOENT (No such fileor directory)
Portanto, parece que /etc/mysql/my.cnf é o único desde que stat64 () e read () foram bem-sucedidos.
Por padrão, o mysql pesquisa my.cnf primeiro na pasta / etc. Se não houver arquivo /etc/my.cnf dentro desta pasta, recomendamos que você crie um novo nesta pasta, conforme indicado na documentação ( https://dev.mysql.com/doc/refman/5.6/en/option -files.html ).
Você também pode procurar o my.cnf existente fornecido pela sua instalação do mysql. Você pode iniciar o seguinte comando
sudo find /-name "*.cnf"
Você pode usar o seguinte arquivo de configuração com a tabela myisam e sem o suporte ao innodb mysql (da instalação da porta do mysql no mac os x maverick). Por favor, verifique cada comando neste arquivo de configuração.
# Example MySQL config filefor large systems.## This isfor a large system with memory =512M where the system runs mainly
# MySQL.## MySQL programs look foroption files in a setof# locations which depend on the deployment platform.# You can copy this optionfileto one of those
# locations.For information about these locations, see:# http://dev.mysql.com/doc/mysql/en/option-files.html
##In this file, you can useall long options that a program supports.#If you want to know which options a program supports, run the program
#with the "--help"option.# The following options will be passed toall MySQL clients
[client]#password = your_password
port =3306
socket =/opt/local/var/run/mysql5/mysqld.sock
# Here follows entries forsome specific programs
# The MySQL server
[mysqld]
port =3306
socket =/opt/local/var/run/mysql5/mysqld.sock
skip-locking
key_buffer_size =256M
max_allowed_packet =1M
table_open_cache =256
sort_buffer_size =1M
read_buffer_size =1M
read_rnd_buffer_size =4M
myisam_sort_buffer_size =64M
thread_cache_size =8
query_cache_size=16M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8
# Don't listen on a TCP/IP port at all. This can be a security enhancement,#ifall processes that need toconnectto mysqld run on the same host.#All interaction with mysqld must be made via Unix sockets or named pipes.# Note that using this option without enabling named pipes on Windows
#(via the "enable-named-pipe"option) will render mysqld useless!##skip-networking
#Replication Master Server (default)# binary logging is required forreplication
log-bin=mysql-bin
# binary logging format - mixed recommended
binlog_format=mixed
# required unique id between1and2^32-1# defaults to1if master-host isnotset# but will notfunctionas a master if omitted
server-id =1#Replication Slave (comment out master section touse this)##To configure this host as a replication slave, you can choose between# two methods :##1)Use the CHANGE MASTER TO command (fully described in our manual)-# the syntax is:## CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>,# MASTER_USER=<user>, MASTER_PASSWORD=<password>;##where you replace <host>,<user>,<password>by quoted strings and#<port>by the master's port number (3306 by default).
#
# Example:
#
# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,
# MASTER_USER='joe', MASTER_PASSWORD='secret';
#
# OR
#
# 2) Set the variables below. However, in case you choose this method, then
# start replication for the first time (even unsuccessfully, for example
# if you mistyped the password in master-password and the slave fails to
# connect), the slave will create a master.info file, and any later
# change in this file to the variables'values below will be ignored and# overridden by the content of the master.info file, unless you shutdown# the slave server,delete master.info and restart the slaver server.#For that reason, you may want to leave the lines below untouched
#(commented)and instead use CHANGE MASTER TO(see above)## required unique id between2and2^32-1#(and different from the master)# defaults to2if master-host isset# but will notfunctionas a slave if omitted
#server-id =2## The replication master for this slave - required
#master-host =<hostname>## The username the slave will usefor authentication when connecting
#to the master - required
#master-user =<username>## The password the slave will authenticate withwhen connecting to# the master - required
#master-password =<password>## The port the master is listening on.# optional - defaults to3306#master-port =<port>## binary logging -not required for slaves, but recommended
#log-bin=mysql-bin
# Uncomment the followingif you are using InnoDB tables
#innodb_data_home_dir =/opt/local/var/db/mysql5
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir =/opt/local/var/db/mysql5
# You can set.._buffer_pool_size up to50-80%#of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size =256M
#innodb_additional_mem_pool_size =20M
#Set.._log_file_size to25%of buffer pool size
#innodb_log_file_size =64M
#innodb_log_buffer_size =8M
#innodb_flush_log_at_trx_commit =1#innodb_lock_wait_timeout =50[mysqldump]
quick
max_allowed_packet =16M
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
[myisamchk]
key_buffer_size =128M
sort_buffer_size =128M
read_buffer =2M
write_buffer =2M
[mysqlhotcopy]
interactive-timeout
Conforme observado pelo konyak, você pode obter a lista de locais que o mysql procurará pelo seu my.cnfarquivo executando mysqladmin --help. Como isso é bastante detalhado, você pode chegar rapidamente à parte da sua preferência:
$ mysqladmin --help | grep -A1 'Default options'
Isso fornecerá uma saída semelhante a:
Default options are readfrom the following files in the given order:/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
Dependendo de como você instalou o mysql, é possível que nenhum desses arquivos esteja presente ainda. Você pode catusá-los para ver como sua configuração está sendo criada e criar sua própria, my.cnfse necessário, no local preferido.
para mim, era que eu tinha o tipo de tabelas "ENGINE = MyISAM", depois que eu mudei para "ENGINE = InnoDB" funcionou :) no PhpMyAdmin no Serviço de Aplicativo do Azure :)
Caso você esteja em um VPS e esteja tentando editar um my.cnf em um servidor já em execução, tente:
ps aux | grep mysql
Você mostrará os parâmetros em que o comando mysql está sendo executado e onde o --defaults-file pontos para
Observe que seu servidor pode estar executando mais de um servidor MySQL / MariaDB. Se você --defaults-filevir uma linha sem parâmetro, essa instância poderá estar recuperando a configuração dos .cnf mencionados acima, mysqladmin --helpcomo outros indicaram.
Lembre-se de que, embora o mariadDB carregue detalhes de configuração dos vários arquivos my.cnf, conforme listado nas outras respostas aqui, ele também pode carregá-los de outros arquivos com nomes diferentes.
Isso significa que, se você fizer uma alteração em um dos arquivos my.cnf, ele poderá ser substituído por outro arquivo com um nome diferente. Para fazer a mudança, você precisa alterá-la no arquivo de configuração correto (carregado pela última vez) - ou, talvez, alterá-la em todas elas.
Então, como você encontra todos os arquivos de configuração que podem ser carregados? Em vez de procurar arquivos my.cnf, tente executar:
grep -r datadir /etc/mysql/
Ele encontrará todos os locais em que o datadir é mencionado. No meu caso, produz esta resposta:
Quando edito esse arquivo (/etc/mysql/mariadb.conf.d/50-server.cnf) para alterar o valor do datadir, ele funciona, enquanto a alteração no my.cnf não. Portanto, qualquer que seja a opção que você queira alterar, tente procurar dessa maneira.
locate my.cnf
para descobrir onde estão todos esses nomes de arquivosRespostas:
Não há nenhum comando interno do MySQL para rastrear isso, é um pouco abstrato demais. O arquivo pode estar em 5 (ou mais?) Locais e todos eles são válidos porque carregam em cascata.
Esses são os locais padrão que o MySQL analisa. Se encontrar mais de um, ele carregará cada um deles e os valores se substituirão (na ordem listada, eu acho). Além disso, o
--defaults-file
parâmetro pode substituir a coisa toda, então ... basicamente, é uma enorme dor no traseiro.Mas, graças ao fato de ser tão confuso, há uma boa chance de estar no /etc/my.cnf.
(se você quiser apenas ver os valores:,
SHOW VARIABLES
mas precisará das permissões para fazer isso.)fonte
/etc/init.d/mysqld restart
.my.cnf
está localizado em/etc/mysql/my.cnf
.mysql --help
e você verá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
etc/mysql/my.cnf
apontando para outro link simbólico/etc/alternatives/my.cnf
que aponta paraetc/mysql/mysql.cnf
.ls /etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
Você pode realmente "solicitar" ao MySQL uma lista de todos os locais onde ele procura por my.cnf (ou my.ini no Windows). Porém, não é uma consulta SQL. Em vez disso, execute:
ou anterior 5.7:
Nas primeiras linhas, você encontrará uma mensagem com uma lista de todos os locais my.cnf que ele procura. Na minha máquina é:
Ou, no Windows:
Observe, no entanto, que pode ser que não exista arquivo my.cnf em nenhum desses locais . Portanto, você pode criar o arquivo por conta própria - use um dos arquivos de configuração de amostra fornecidos com a distribuição MySQL (no Linux - veja os
/usr/share/mysql/*.cnf
arquivos e use o que for apropriado para você - copie-o/etc/my.cnf
e modifique-o conforme necessário).Além disso, observe que também há uma opção de linha de comando
--defaults-file
que pode definir o caminho personalizado para o arquivo my.cnf ou my.ini. Por exemplo, este é o caso do MySQL 5.5 no Windows - aponta para um arquivo my.ini no diretório de dados, que normalmente não está listadomysqld --help --verbose
. No Windows - consulte as propriedades do serviço para descobrir se esse é o seu caso.Por fim, verifique o https://dev.mysql.com/doc/refman/8.0/en/option-files.html - ele é descrito lá em mais detalhes.
fonte
Default options are read from the following files in the given order: /etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf
- esperava os 2 primeiros arquivos na ordem inversa.mysqld --help --verbose
contradizem o que está indicado em dev.mysql.com/doc/refman/5.5/en/option-files.html . Na minha experiência "recente até hoje" com a versão 5.6, as informações no site são as mais corretas e relevantes. A prioridade do local dos arquivos fornecida pelo comando help é enganosa e levará a resultados negativos.Você sempre pode executar o find em um terminal.
fonte
find / -name my.cnf
é a sua melhor aposta, mas você também pode verificar o seu diretório home e /etc/mysql/my.conf Você também pode ver se o seu MYSQL_HOME é definido digitandoecho $MYSQL_HOME
em um terminal~/.my.cnf
- observe o ponto inicial no nome do arquivo. A execução de uma descoberta em todo o sistema de arquivos geralmente gera dezenas de erros de "Permissão negada", a menos que você seja root. Portanto, o comando find deve serfind / -name '*my.cnf' 2>/dev/null
.Você pode usar :
fonte
whereis
não vai funcionar aqui; ele procura os locais correspondentes a um comando e não consegue encontrar arquivos arbitrários.Isso pode funcionar:
na minha máquina isso gera:
Portanto, parece que /etc/mysql/my.cnf é o único desde que stat64 () e read () foram bem-sucedidos.
fonte
dirá onde
my.cnf
está localizado no Mac / LinuxNesse caso, está em
/etc/mysql/my.cnf
Nesse caso, está em
/usr/local/etc/my.cnf
fonte
Por padrão, o mysql pesquisa my.cnf primeiro na pasta / etc. Se não houver arquivo /etc/my.cnf dentro desta pasta, recomendamos que você crie um novo nesta pasta, conforme indicado na documentação ( https://dev.mysql.com/doc/refman/5.6/en/option -files.html ).
Você também pode procurar o my.cnf existente fornecido pela sua instalação do mysql. Você pode iniciar o seguinte comando
Você pode usar o seguinte arquivo de configuração com a tabela myisam e sem o suporte ao innodb mysql (da instalação da porta do mysql no mac os x maverick). Por favor, verifique cada comando neste arquivo de configuração.
fonte
Conforme observado pelo konyak, você pode obter a lista de locais que o mysql procurará pelo seu
my.cnf
arquivo executandomysqladmin --help
. Como isso é bastante detalhado, você pode chegar rapidamente à parte da sua preferência:Isso fornecerá uma saída semelhante a:
Dependendo de como você instalou o mysql, é possível que nenhum desses arquivos esteja presente ainda. Você pode
cat
usá-los para ver como sua configuração está sendo criada e criar sua própria,my.cnf
se necessário, no local preferido.fonte
Para o Ubuntu 16: /etc/mysql/mysql.conf.d/mysqld.cnf
fonte
For Ubuntu 16: /etc/mysql/mysql.conf.d/mysqld.cnf
Não sei como você configurou o MySQL no seu ambiente Linux, mas você verificou?
fonte
Tente correr
mysqld --help --verbose | grep my.cnf | tr " " "\n"
Saída será algo como
fonte
Se você estiver em um Mac com Homebrew, use
Você verá algo como
Essa última linha é a de
INSTALLERDIR
acordo com os documentos do MySQLfonte
Encontrei o meu usando
fonte
Outra opção é usar o comando whereis.
Por exemplo, whereis my.cnf
fonte
Respondido apenas para usuários do MySQL Workbench,
fonte
Todas as ótimas sugestões, no meu caso, não encontrei em nenhum desses locais, mas
/usr/share/mysql
tenho uma VM RHEL e instaleimysql5.5
fonte
Você precisará examinar os vários locais, dependendo da sua versão do MySQL.
fonte
Você também pode executar este comando.
mysql --help | grep cnf
fonte
grep
comfindstr
:mysql --help | findstr cnf
e ele fez a mágicaNo Ubuntu (edição direta):
fonte
/etc/mysql/mysql.conf.d/mysqld.cnf
Eu instalei o pacote xampp
apache, php and mysql
no ubuntu . Omy.cnf
arquivo está localizado na/opt/lampp/etc/
pasta Espero que ajude alguém.fonte
Se você estiver usando o MAMP, acesse Templates> MySQL (my.cnf)> [version]
Se você estiver executando o MAMP sem janelas, poderá precisar personalizar a barra de ferramentas usando o botão Personalizar.
fonte
para mim, era que eu tinha o tipo de tabelas "ENGINE = MyISAM", depois que eu mudei para "ENGINE = InnoDB" funcionou :) no PhpMyAdmin no Serviço de Aplicativo do Azure :)
fonte
Caso você esteja em um VPS e esteja tentando editar um my.cnf em um servidor já em execução, tente:
Você mostrará os parâmetros em que o comando mysql está sendo executado e onde o
--defaults-file
pontos paraObserve que seu servidor pode estar executando mais de um servidor MySQL / MariaDB. Se você
--defaults-file
vir uma linha sem parâmetro, essa instância poderá estar recuperando a configuração dos .cnf mencionados acima,mysqladmin --help
como outros indicaram.fonte
Lembre-se de que, embora o mariadDB carregue detalhes de configuração dos vários arquivos my.cnf, conforme listado nas outras respostas aqui, ele também pode carregá-los de outros arquivos com nomes diferentes.
Isso significa que, se você fizer uma alteração em um dos arquivos my.cnf, ele poderá ser substituído por outro arquivo com um nome diferente. Para fazer a mudança, você precisa alterá-la no arquivo de configuração correto (carregado pela última vez) - ou, talvez, alterá-la em todas elas.
Então, como você encontra todos os arquivos de configuração que podem ser carregados? Em vez de procurar arquivos my.cnf, tente executar:
Ele encontrará todos os locais em que o datadir é mencionado. No meu caso, produz esta resposta:
Quando edito esse arquivo (/etc/mysql/mariadb.conf.d/50-server.cnf) para alterar o valor do datadir, ele funciona, enquanto a alteração no my.cnf não. Portanto, qualquer que seja a opção que você queira alterar, tente procurar dessa maneira.
fonte
Depende do seu acesso certo, mas para mim este trabalho no phpmyadmin sql console
MOSTRAR VARIÁVEIS;
depois, para alterar algumas variáveis, você pode fazer
SET GLOBAL max_connections = 1000;
ou
SET @@ GLOBAL.max_connections = 1000;
Experimente
fonte