O MySQL pode, desde a versão 3.22, ler as opções padrões de inicialização para o servidor e para clientes dos arquivos de opções.
No Windows, o MySQL lê opções padrões dos seguintes arquivos:
Nome do Arquivo | Propósito |
Windows-directory\my.ini |
Opções globais |
C:\my.cnf |
Opções globais |
Windows-directory
é a localização do seu
diretório Windows.
No Unix, o MySQL lê opções padrões dos seguintes arquivos:
Nome do arquivo | Propósito |
/etc/my.cnf |
Opções globais |
DATADIR/my.cnf |
Opções específicas do servidor |
defaults-extra-file |
O arquivo especificado com --defaults-extra-file=#
|
~/.my.cnf |
Opções específicas do usuário |
DATADIR
é o diretório de dados do MySQL
(normalmente /usr/local/mysql/data
para
instalações binárias ou /usr/local/var
para instalações de código fonte). Perceba que este é o
diretório que foi especificado na hora da configuração, não
o especificado com --datadir
quando o
mysqld
inicia! (--datadir
não tem efeito sobre o local onde o servidor procura por
arquivos de opções, porque ele procura pelos arquivos antes de
processar qualquer argumento da linha de comando.)
Note que no Windows, você deve especificar todos os caminhos no
arquivo de opção com /
no lugar de
\
. Se for utilizado o \
,
será necessário digitá-lo duas vezes, pois o
\
é o caractere de escape no MySQL.
O MySQL tenta ler os arquivos de opções na ordem listada acima. Se múltiplos arquivos de opções existirem, uma opção especificada em um arquivo lido depois recebe a precedência sobre a mesma opção especificada em um arquivo lido anteriormente. Opções especificadas na linha de comando recebem a precedência sobre opções especificadas em qualquer arquivo de opções. Algumas opções podem ser especificadas usando variáveis de ambiente. Opções especificadas na linha de comando ou nos arquivos de opção tem precendencia sobre valores nas variáveis de ambiente. See Apêndice F, Variáveis de Ambientes do MySQL.
Os seguintes programas suportam arquivos de opções:
mysql
, mysqladmin
,
mysqld
, mysqld_safe
,
mysql.server
, mysqldump
,
mysqlimport
, mysqlshow
,
mysqlcheck
, myisamchk
, e
myisampack
.
Desde a versão 4.0.2, você pode usar o prefixo
loose
para opções de linha de comando (ou
opções no my.cnf). Se uma opção possui o prefixo
loose
, o programa que a ler não finalizará
com um erro se uma opção for desconhecida, mas apenas enviará
um aviso:
shell> mysql --loose-no-such-option
Você pode usar arquivos de opções para especificar qualquer
opção extendida que o programa suporte! Execute o programa com
--help
para obter uma lista das opções
disponíveis.
Um arquivo de opções pode conter linhas na seguinte forma:
#comentario
Linhas de comentário iniciam com o caractere
‘#
’ ou
‘;
’. Comentários podem
iniciar no meio de uma linha também. Linhas vazias são
ignoradas.
[grupo]
grupo
é o nome do programa ou grupo para
o qual você irá configurar as opções. Depois de uma
linha de grupo, qualquer linha de opção
ou set-variable
são referentes ao grupo
até o final do arquivo de opções ou outra linha de
início de grupo.
opção
Isto é equivalente à --opção
na linha
de comando.
opção=valor
Isto é equivalente à --opção=valor
na
linha de comando. Por favor, note que você deve colocar um
argumento entre aspas duplas, se o argumento de uma opção
conter um caracter de comentário.
set-variable = nome=valor
Isto é equivalente à --set-variable
nome=valor
na linha de comando.
Por favor, notem que --set-variable
está
obsoleto desde o MySQL 4.0; a partir desta versão os nomes
das variáveis de programa podem ser usados como nome de
opções. Na linha de comando, use apenas
--nome=valor
. Em um arquivo de opção, use
nome=valor
.
O grupo [client]
permite especificar opções
para todos clientes MySQL (não o mysqld
).
Este é o grupo perfeito de se usar para espeficar a senha que
você usa para conectar ao servidor. (Mas tenha certeza que o
arquivo de opções só pode ser lido e gravado por você)
Se você quiser criar opções que devem ser lidas por uma
versão específica do servidor mysqld
você
pode fazer isto com [mysqld-4.0]
,
[mysqld-4.1]
etc:
[mysqld-4.0] new
A nova opção acima só será usada com o versões 4.0.x do servidor MySQL.
Perceba que para opções e valores, todos espaços em branco
são automaticamente apagados. Você pode usar a sequencia de
escape '\b
', '\t
',
'\n
', '\r
',
'\\
' e '\s
' no valor da
string ('\s
' == espaço).
Aqui está um típico arquivo de opções globais.
[client] port=3306 socket=/tmp/mysql.sock [mysqld] port=3306 socket=/tmp/mysql.sock set-variable = key_buffer_size=16M set-variable = max_allowed_packet=1M [mysqldump] quick
Aqui está um típico arquivo de opções do usuário
[client] # A senha seguinte será enviada para todos clientes MySQL password="minha_senha" [mysql] no-auto-rehash set-variable = connect_timeout=2 [mysqlhotcopy] interactive-timeout
Se você tem uma distribuição fonte, você encontrará
arquivos de exemplo de configuração chamados
my-xxxx.cnf
no diretório
support-files
. Se você tem uma
distribuição binária olhe no diretório de instalação
DIR/support-file
, onde
DIR
é o caminho para o diretório de
instalação (normalmente C:\mysql
ou
/usr/local/mysql
). Atualmente existem
arquivos de configuração para sistemas pequenos, médios,
grandes e enormes. Você pode copiar
my-xxxx.cnf
para seu diretório home
(renomeie a cópia para .my.cnf
para
experimentar.
Todos os programas MySQL que suportam arquivos de opções aceitam opções:
Opção | Descrição |
--no-defaults |
Não lê nenhum arquivo de opções. |
--print-defaults |
Imprima o nome do programa e todas opções. |
--defaults-file=caminho-para-arquivo-padrão |
Utilize somente o arquivo de configuração específicado. |
--defaults-extra-file=caminho-para-arquivo-padrão |
Leia este arquivo de configuração depois do arquivo de configuração global mas antes do arquivo de configuração do usuário. |
Perceba que as opções acima devem vir primeiro na linha de
comando para funcionar, com exceção que
--print-defaults
deve ser usado logo depois dos
comandos --defaults-file
ou
--defaults-extra-file
.
Notas para desenvolvedores: O tratamento de arquivos de opções é implementado simplesmente processando todos as opções coincidentes (isto é, opções no grupo apropriado) antes de qualquer argumento da linha de comando. Isto funciona bem para programas que usam a última instância de uma opção que é especificada diversas vezes. Se você tem um programa antigo que trata opções especificadas várias vezes desta forma mas não lê arquivos de opções, você só precisa adicionar duas linhas para lhe dar esta capacidade. Verifique o código fonte de qualquer um dos clientes MySQL padrão para ver como fazer isto.
Nos scripts shell você pode usar o comando
my_print_defaults
para analisar os arquivos
de opção. O seguinte exemplo mostar a saída que
my_print_defaults
pode produzir quando quando
pedido para mostrar as opções encontradas nos grupos
[client]
e [mysql]
:
shell> my_print_defaults client mysql
--port=3306
--socket=/tmp/mysql.sock
--no-auto-rehash
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.