Respostas:
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.)
/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 para etc/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:
$ 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 read from 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 read from 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/*.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á listado mysqld --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.
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.
find / -name my.cnf
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_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 ser find / -name '*my.cnf' 2>/dev/null
.
Você pode usar :
locate my.cnf
whereis my.cnf
find . -name my.cnf
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:
strace mysql ";" 2>&1 | grep cnf
na minha máquina isso gera:
stat64("/etc/my.cnf", 0xbf9faafc) = -1 ENOENT (No such file or directory)
stat64("/etc/mysql/my.cnf", {st_mode=S_IFREG|0644, st_size=4271, ...}) = 0
open("/etc/mysql/my.cnf", O_RDONLY|O_LARGEFILE) = 3
read(3, "# /etc/mysql/my.cnf: The global "..., 4096) = 4096
stat64("/home/xxxxx/.my.cnf", 0xbf9faafc) = -1 ENOENT (No such file or directory)
Portanto, parece que /etc/mysql/my.cnf é o único desde que stat64 () e read () foram bem-sucedidos.
mysql --help | grep /my.cnf | xargs ls
dirá onde my.cnf
está localizado no Mac / Linux
ls: cannot access '/etc/my.cnf': No such file or directory
ls: cannot access '~/.my.cnf': No such file or directory
/etc/mysql/my.cnf
Nesse caso, está em /etc/mysql/my.cnf
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
Nesse caso, está em /usr/local/etc/my.cnf
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 file for large systems.
#
# This is for a large system with memory = 512M where the system runs mainly
# MySQL.
#
# MySQL programs look for option files in a set of
# locations which depend on the deployment platform.
# You can copy this option file to 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 use all 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 to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /opt/local/var/run/mysql5/mysqld.sock
# Here follows entries for some 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,
# if all processes that need to connect to 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 for replication
log-bin=mysql-bin
# binary logging format - mixed recommended
binlog_format=mixed
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id = 1
# Replication Slave (comment out master section to use 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 between 2 and 2^32 - 1
# (and different from the master)
# defaults to 2 if master-host is set
# but will not function as a slave if omitted
#server-id = 2
#
# The replication master for this slave - required
#master-host = <hostname>
#
# The username the slave will use for authentication when connecting
# to the master - required
#master-user = <username>
#
# The password the slave will authenticate with when connecting to
# the master - required
#master-password = <password>
#
# The port the master is listening on.
# optional - defaults to 3306
#master-port = <port>
#
# binary logging - not required for slaves, but recommended
#log-bin=mysql-bin
# Uncomment the following if 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 to 50 - 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 to 25 % 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.cnf
arquivo 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 read from 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 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.
Para o Ubuntu 16: /etc/mysql/mysql.conf.d/mysqld.cnf
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?
Tente correr mysqld --help --verbose | grep my.cnf | tr " " "\n"
Saída será algo como
/etc/my.cnf
/etc/mysql/my.cnf
/usr/local/etc/my.cnf
~/.my.cnf
Se você estiver em um Mac com Homebrew, use
informações de fermentação mysql
Você verá algo como
$ brew info mysql
mysql: stable 5.6.13 (bottled)
http://dev.mysql.com/doc/refman/5.6/en/
Conflicts with: mariadb, mysql-cluster, percona-server
/usr/local/Cellar/mysql/5.6.13 (9381 files, 354M) *
Essa última linha é a de INSTALLERDIR
acordo com os documentos do MySQL
Você precisará examinar os vários locais, dependendo da sua versão do MySQL.
mysqld --help -verbose | grep my.cnf
For Homebrew:
/usr/local/Cellar/mysql/8.0.11/bin/mysqld (mysqld 8.0.11)
Default possible locations:
/etc/my.cnf
/etc/mysql/my.cnf
~/.my.cnf
Found mine here:
/usr/local/etc/my.cnf
Você também pode executar este comando.
mysql --help | grep cnf
grep
com findstr
: mysql --help | findstr cnf
e ele fez a mágica
No Ubuntu (edição direta):
$ sudo nano /etc/mysql.conf.d/mysqld.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
Eu instalei o pacote xampp apache, php and mysql
no ubuntu . O my.cnf
arquivo está localizado na /opt/lampp/etc/
pasta Espero que ajude alguém.
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-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.
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:
/etc/mysql/mariadb.conf.d/50-server.cnf:datadir = /var/lib/mysql
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.
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
locate my.cnf
para descobrir onde estão todos esses nomes de arquivos