XOOPS Brasil

 

Ferramentas, Utilitários e Scripts do Lado do Cliente MySQL





Visão Geral dos Utilitários e Scripts do Lado do Cliente do MySQL

Todos clientes MySQL que comunicam com o servidor utilizando a biblioteca mysqlclient utilizam as seguintes variáveis de ambiente:

NomeDescrição
MYSQL_UNIX_PORTO socket padrão, utilizado para conexões ao localhost
MYSQL_TCP_PORTA porta TCP/IP padrão
MYSQL_PWDA senha padrão
MYSQL_DEBUGOpções de depuração-ratreamento durante depuração
TMPDIRO diretório onde tabelas e arquivos temporários são criados

A utilização de MYSQL_PWD é insegura. Veja mais informações sobre isto na Seção 4.3.8, “Conectando ao Servidor MySQL”.

No Unix, o cliente mysql utiliza o arquivo nomeado na variável de ambiente MYSQL_HISTFILE para salvar o histórico da linha de comando. O valor padrão para o arquivo de histórico é $HOME/.mysql_history, onde $HOME é o valor da variável de ambiente HOME. Veja mais informações sobre isto na Apêndice F, Variáveis de Ambientes do MySQL.

Se você não quiser manter um arquivo que contenh um registro de suas consultas, primeiro remova .mysql_history se ele existir, então use uma das seguintes técnicas:

  • Defina a variável MYSQL_HISTFILE para /dev/null. Para que esta configuração tenha efeito a cada vez que você logar, coloque-a em um dos arquivos de inicialização da sua shell.

  • Crie .mysql_histfile como um link simbólico para /dev/null:

    shell> ln -s /dev/null $HOME/.mysql_history
    

    Você só precisa de fazer isto uma vez.

Todos os programas MySQL podem receber várias opções diferentes. Entretanto, todo programa MySQL fornece a opção --help que você pode utilizar para obter uma descrição completa das diferentes opções do programa. Por exemplo, experimente mysql --help

Você pode sobrepor todas as opções padrões para programas cliente padrões com um arquivo de opções. Seção 4.1.2, “Arquivo de Opções my.cnf

A lista abaixo descreve resumidamente os programas MySQL:

  • msql2mysql

    Um script shell que converte programas mSQL para MySQL. Ele não lida com todos os casos, mas ele fornece um bom inicio para a conversão.

  • mysql

    A ferramenta de linha de comando para a entrada de consultas interativamente ou a execução de consultas a partir de um arquivo no modo batch. Veja mais informações sobre isto na Seção 4.9.2, “mysql, A Ferramenta de Linha de Comando”.

  • mysqlcc

    Este programa fornece uma interface gráfica para interagir com o servidor. server. Veja mais informações sobre isto na Seção 4.9.3, “mysqlcc, The MySQL Control Center”.

  • mysqlaccess

    Um script que verifica os privilégios de acesso para uma combinação de nome de máquina, utilizador e banco de dados.

  • mysqladmin

    Utilitário para realizar operações administrativas, tais como criação ou remoção de bancos de dados, recarga das tabelas de permissões, descarga de tabelas em disco e reabertura dos arquivos log. mysqladmin também pode ser usado para exibir informações de versão, processos e estado do servidor. Veja mais informações sobre isto na Seção 4.9.4, “mysqladmin, Administrando um Servidor MySQL”.

  • mysqlbinlog

    Utilitário para leitura das consultas de um log binário. Pode ser usado para recuperação de falhas com um backup antigo. Veja mais informações sobre isto na Seção 4.9.5, “mysqlbinlog, Executando as Consultas a Partir de um Log Binário”.

  • mysqldump

    Descarrega um banco de dados MySQL em um arquivo como instruções SQL ou como arquivo texto separado por tabulação. Versão aprimorada do freeware escrito originalmente por Igor Romanenko. Veja mais informações sobre isto na Seção 4.9.7, “mysqldump, Descarregando a Estrutura de Tabelas e Dados”.

  • mysqlimport

    Importa arquivos texto em suas tabelas respectivas utilizando LOAD DATA INFILE. Veja mais informações sobre isto na Seção 4.9.9, “mysqlimport, Importando Dados de Arquivos Texto”.

  • mysqlshow

    Exibe informações sobre bancos de dados, tabelas, colunas e índices.

  • replace

    Um programa utilitário que é usado pelo msql2mysql, mas que também pode ser aplicável mais genericamente. replace altera conjuntos de caracteres. Utiliza uma máquina de estado finito para comparar strings maiores primeiro. Pode ser usada para trocar conjuntos de caracteres. Por exemplo, este comando troca a e b nos arquivos dados:

    shell> replace a b b a -- arquivo1 arquivo2 ...
    

4.9.2. mysql, A Ferramenta de Linha de Comando

O mysql é uma shell SQL simples (com capacidades GNU readline). Ele suporta usos interativos e não interativos. Quando usado interativamente, os resultados das consultas são apresentadas no formato de tabela ASCII. Quando não usado interativamente (como um filtro por exemplo), o resultado é apresentado em um formato separado por tabulações. (O formato de saída pode ser alterado utilizando opções da linha de comando.) Você pode executar scripts desta forma:

shell> mysql database < script.sql > saida.tab

Se você tiver problemas devido a memória insuficiente no cliente, utilize a opção --quick! Isto força o mysql a utilizar mysql_use_result() no lugar de mysql_store_result() para recuperar o conjunto de resultados.

Utilizar o mysql é muito fáci. Inicie-o como mostrado a seguir: mysql banco_de_dados ou mysql --user=nome_utilizador --password=sua_senha banco_de_dados. Digite uma instrução SQL, termine-a com ‘;’, '\g', ou '\G' e pressione RETURN/ENTER.

O mysql Suporta as seguintes opções:

  • -?, --help

    Exibe esta ajuda e sai.

  • -A, --no-auto-rehash

    Sem reprocessamento automático. O 'rehash' deve ser usado se o utilizador desejar que o cliente mysql complete as tabelas e campos. Esta opção é usada para acelerar a inicialização do cliente.

  • --prompt=...

    Configura o prompt do mysql com o formato especificado.

  • -b, --no-beep

    Deliga o beep nos erros.

  • -B, --batch

    Exibe resultados com o caractere de tabulação como o separador, cada registro em uma nova linha. Não utiliza o arquivo de histórico.

  • --character-sets-dir=...

    Diretório onde os conjuntos de caracteres estão localizados.

  • -C, --compress

    Utiliza compactação no protocolo cliente/servidor.

  • -#, --debug[=...]

    Log de Depuração. O padrão é 'd:t:o,/tmp/mysql.trace'.

  • -D, --database=...

    Qual banco de dados usar. Isto geralmente é util em um arquivo my.cnf.

  • --default-character-set=...

    Configura o conjunto de caracters padrão.

  • -e, --execute=...

    Executa o comando e sai. (Saída parecida com --batch)

  • -E, --vertical

    Exibe a saída de uma consulta (linhas) verticalmente. Sem esta opção você também pode forçar esta saída terminando suas instruções com \G.

  • -f, --force

    Continue mesmo se for obtido um erro SQL.

  • -g, --no-named-commands

    Comandos nomeados serão desabilitados. Utilize somente a forma \*, ou use comandos nomeados apenas no começo da linha terminada com um ponto-e-vírgula (;). Desde a versão 10.9, o cliente agora inicia com esta opção habilitada por padrão! Com a opção -g, entretando, comandos de formato longo continuarão funcionando na primeira linha.

  • -G, --enable-named-commands

    Comandos nomeados são habilitados. Comandos de formato longo são aceitos assim como os comandos reduzidos \*.

  • -i, --ignore-space

    Ignore caractere de espaço depois de nomes de funções.

  • -h, --host=...

    Conectar à máquina especificada.

  • -H, --html

    Produz saída HTML.

  • -X, --xml

    Produz saída XML.

  • -L, --skip-line-numbers

    Não escreve o número da linha para os erros. Útil quando se deseja comparar arquivos com resultados que incluem mensagens de erro.

  • --no-pager

    Desabilita paginação e impressão na saída padrão. Veja também a ajuda interativa (\h).

  • --no-tee

    Desabilita arquivo de saída. Veja também a ajuda interativa (\h).

  • -n, --unbuffered

    Descarrega e atualiza o buffer depois de cada pesquisa.

  • -N, --skip-column-names

    Não escrever nomes de colunas nos resultados.

  • -O, --set-variable nome=opção

    Fornece um valor a uma variável. --help lista as variáveis. Por favor, note que as sintaxes --set-variable=name=value e -O name=value estão obsoletas desde o MySQL 4.0, use --nome=valor.

  • -o, --one-database

    Atualiza somente o banco de dados padrão. Isto é útil para evitar atualização em outros bancos de dados no log de atualizações.

  • --pager[=...]

    Tipo de saída. O padrão é sua variável de ambiente PAGER. Paginadores válidos são: less, more, cat [>nome_arquivo], etc. Veja também a ajuda interativa (\h). Esta opção não funciona no modo batch. A opção pager funciona somente no UNIX.

  • -p[password], --password[=...]

    Senha a ser usada ao conectar ao servidor. Se uma senha não é fornecida na linha de comando, lhe será solicitado uma. Perceba que se você utilizar o formato curto -p você não pode ter um espaço entre a opção e a senha.

  • -P --port=...

    Número da porta TCP/IP para usar na conexão.

  • --protocol=(TCP | SOCKET | PIPE | MEMORY)

    Especifica o protocolo de conexão usado. Novo no MySQL 4.1.

  • -q, --quick

    Não faz cache do resultado, imprime linha a linha. Isto pode deixar o servidor mais lento se a saída for suspendida. Não usa arquivo de histórico.

  • -r, --raw

    Exibe valores de colunas sem conversão de escapes. Utilizado com --batch

  • --reconnect

    Se a conexão é perdida, tentar reconectar ao servidor automaticamente (mas apenas uma vez).

  • -s, --silent

    Opção para ser mais silencioso.

  • -S --socket=...

    Arquivo socket para ser utilizado na conexão.

  • -t --table

    Saída no formato de tabela. Isto é padrão no modo não-batch.

  • -T, --debug-info

    Exibe alguma informação de depuração na saída.

  • --tee=...

    Anexa tudo no arquivo de saída. Veja também a ajuda interativa (\h). Não funciona no modo batch.

  • -u, --user=#

    Utilizador para login diferente do utilizador atual do sistema.

  • -U, --safe-updates[=#], --i-am-a-dummy[=#]

    Permite somente que UPDATE e DELETE utilizem chaves. Veja abaixo para maiores informações sobre esta opção. Você pode zerar esta opção se possui-la no arquivo my.cnf utilizando --safe-updates=0.

  • -v, --verbose

    Modo verbose (-v -v -v fornece o formato de saída da tabela).

  • -V, --version

    Gera saída com informação de versão e sai.

  • -w, --wait

    Espera e repete em vez de sair se a conexão estiver inacessível.

Você também pode configurar as seguntes variáveis com -O ou --set-variable. Por favor, note que as sintaxes --set-variable=nome=valor e -O name=value estão obsoletas desde o MySQL 4.0, use --var=option:

Nome VariávelPadrãoDescrição
connect_timeout0Número de seguntos antes de esgotar o tempo da conexão
local-infile0Disabilita (0) ou habilita (1) capacidade LOCAL para LOAD DATA INFILE
max_allowed_packet16777216Tamanho máximo do pacote para enviar/receber do servidor
net_buffer_length16384Tamanho do buffer para comunicação TCP/IP e socket
select_limit1000Limite automático para SELECT quando utilizar --safe-updtaes
max_join_size1000000Limite automático para registros em uma join quando utilizar --safe-updtaes.

Se o cliente mysql perder a conexào com o servidor enquanto envia uma consulta, ele tentará se reconectar imediatamente e automaticamente uma vez e enviar a consulta novamente. Note que mesmo se ele obter sucesso na reconexão, como sua primeira conexão foi finalizada, todas seus objetos da sessão anteriores foram perdidos: tabelas temporárias, e variáveis de sessão e de utilizador. Desta forma, o comportamento acima pode ser perigoso para você, como neste exemplo onde o servidor foi desligado e reiniciado sem você saber:

mysql> set @a=1;
Query OK, 0 rows affected (0.05 sec)
mysql> insert into t values(@a);
ERROR 2006: MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 1
Current database: test
Query OK, 1 row affected (1.30 sec)
mysql> select * from t;
+------+
| a |
+------+
| NULL |
+------+
1 row in set (0.05 sec)

A variável de utilizador @a foi perdida com a conexão e depois da reconexão ela é indefinida. Para se proteger deste risco, você pode iniciar o cliente mysql com a opção --disable-reconnect.

Se você digitar 'help' na linha de comando, mysql irá exibir os comandos que ele suporta:

mysql> help
MySQL commands:
help (\h) Display this text.
? (\h) Synonym for `help'.
clear (\c) Clear command.
connect (\r) Reconnect to the server.
Optional arguments are db and host.
delimiter (\d) Set query delimiter.
edit (\e) Edit command with $EDITOR.
ego (\G) Send command to mysql server,
display result vertically.
exit (\q) Exit mysql. Same as quit.
go (\g) Send command to mysql server.
nopager (\n) Disable pager, print to stdout.
notee (\t) Don't write into outfile.
pager (\P) Set PAGER [to_pager].
Print the query results via PAGER.
print (\p) Print current command.
prompt (\R) Change your mysql prompt.
quit (\q) Quit mysql.
rehash (\#) Rebuild completion hash.
source (\.) Execute an SQL script file.
Takes a file name as an argument.
status (\s) Get status information from the server.
system (\!) Execute a system shell command.
tee (\T) Set outfile [to_outfile].
Append everything into given outfile.
use (\u) Use another database.
Takes database name as argument.

Os comandos edit, nopager, pager, e system funcionam apenas no Unix.

O comando status lhe fornece algumas informações sobre a conexão e o servidor que está utilizando. Se você estiver executando no modo --safe-updates, status irá também imprimir os valores para as variáveis mysql que afetam suas consultas.

Uma opção útil para iniciantes (introduzido no MySQL versão 3.23.11) é o --safe-updates (ou --i-am-a-dummy para utilizadores que uma vez possam ter feito um DELETE FROM nome_tabela mas esqueceram da cláusula WHERE). Quando utilizar esta opção, o mysql envia o seguinte comando ao servidor MySQL quando abrir a conexão.

SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=#select_limit#,
SQL_MAX_JOIN_SIZE=#max_join_size#"

onde #select_limit# e #max_join size# são variáveis que podem ser configuradas da linha de comando mysql. Veja mais informações sobre isto na Seção 5.5.6, “Sintaxe de SET.

O efeito da opção acima é:

  • Você não tem permissão de utilizar uma instrução UPDATE ou DELETE se você não possuir uma chave na parte WHERE. Pode-se, entretanto, forçar um UPDATE/DELETE utilizando LIMIT:

    UPDATE nome_tabela SET campo_nao_chave=# WHERE campo_nao_chave=# LIMIT 1;
    

  • Todos resultados maiores são limitados automaticamente a #select_limit# linhas.

  • SELECT's que provavelmente precisarão examinar mais que #max_join_size combinaçoes de linhas serão abortadas.

Algumas dicas úteis sobre o cliente mysql:

Alguns dados são muito mais legíveis quando exibido verticalmente, em vez da saída do tipo caixa horizontal comum. Por exemplo: Textos longos, que incluem várias linhas, são muito mais fáceis de serem lidos com saída vertical.

mysql> SELECT * FROM mails WHERE LENGTH(txt) < 300 lIMIT 300,1\G
*************************** 1. row ***************************
msg_nro: 3068
date: 2000-03-01 23:29:50
time_zone: +0200
mail_from: Monty
reply: monty@no.spam.com
mail_to: "Thimble Smith" <tim@no.spam.com>
sbj: UTF-8
txt: >>>>> "Thimble" == Thimble Smith writes:
Thimble> Hi. I think this is a good idea. Is anyone familiar with UTF-8
Thimble> or Unicode? Otherwise, I'll put this on my TODO list and see what
Thimble> happens.
Yes, please do that.
Regards,
Monty
file: inbox-jani-1
hash: 190402944
1 row in set (0.09 sec)

Para o log, você pode utilizar a opção tee. O tee pode ser iniciado com a opção --tee=..., ou pela linha de comando de maneira interativa com o comando tee. Todos os dados exibidos na tela serão anexados no arquivo fornecido. Isto também pode ser muito útil para propósitos de depuração. O tee pode ser desabilitado da linha de comando com o comando notee. Executando tee novamente o log é reiniciado. Sem um parâmetro o arquivo anterior será usado. Perceba que tee irá atualizar os resultados dentro do arquivo depois de cada comando, pouco antes da linha de comando reaparecer esperando pelo próximo comando.

Navegar ou pesquisar os resultados no modo interativo em algum programa do UNIX como o less, more ou outro similar, é agora possível com a opção --pager[=...]. Sem argumento, o cliente mysql irá procurar pela variável de ambiente PAGER e configurar pager para este valor. pager pode ser iniciado a partir da linha de comando interativa com o comando pager e desabilitado com o comando nopager. O comando recebe um argumento opcional e e o pager será configurado com ele. O comando pager pode ser chamado com um argumento, mas isto requer que a opção --pager seja usada, ou o pager será usado com a saída padrão. pager funciona somente no UNIX, uma vez que é utilizado a função popen(), que não existe no Windows. No Windows a opção tee pode ser utilizada, entretanto ela pode não ser cômoda como pager pode ser em algumas situações.

Algumas dicas sobre pager:

  • Você pode usá-lo para gravar em um arquivo:

    mysql> pager cat > /tmp/log.txt
    

    e os resultados irão somente para um arquivo. Você também pode passar qualquer opções para os programas que você deseja utilizar com pager:

    mysql> pager less -n -i -S
    

  • Note a opção -S exibida acima. Você pode achá-la muito útil quando navegar pelos resultados; experimente com a opção com saída a horizontal (finalize os comandos com \g, ou ;) e com saída vertical (final dos comandos com \G). Algumas vezes um resultado com um conjunto muito largo é difícil ser lido na tela, com a opção -S para less, você pode navegar nos resultados com o less interativo da esquerda para a direita, evitando que linhas maiores que sua tela continuem na próxima linha. Isto pode tornar o conjunto do resultado muito mais legível. você pode alterar o modo entre ligado e desligado com o less interativo com -S. Veja o 'h'(help) para mais ajuda sobre o less.

    Você pode combinar maneiras muito complexas para lidar com os resultados, por exemplo, o seguinte enviaria os resultados para dois arquivos em dois diferentes diretórios, em dois discos diferentes montados em /dr1 e /dr2, e ainda mostra o resultado na tela via less:

    mysql> pager cat | tee /dr1/tmp/res.txt | \
    tee /dr2/tmp/res2.txt | less -n -i -S
    

Você também pode combinar as duas funções acima; tenha o tee habilitado, o pager configurado para 'less' e você estará apto a navegar nos resultados no less do Unix e ainda ter tudo anexado em um arquivo ao mesmo tempo. A diferença entre UNIX tee usado com o pager e o tee embutido no cliente mysql é que o tee embutido funciona mesmo se você não tiver o comando UNIX tee disponível. O tee embutido também loga tudo que é exibido na tela, e o UNIX tee usado com pager não loga completamente. Por último o tee interativo é mais cômodo para trocar entre os modos on e off, quando você desejar logar alguma coisa em um arquivo, mas deseja estar apto para desligar o recurso quando necessário.

A partir da versão 4.0.2 é possível alterar o prompt no cliente de linha de comando mysql.

Você pode usar as seguintes opções do prompt:

OpçãoDescrição
\vversão mysqld
\dbanco de dados em uso
\hmáquina na qual está conectado
\pporta na qual está conectado
\unome do utilizador
\Unome_utilizador@maquina
\\\
\nnova quebra de linha
\ttab
\espaço
\_espaço
\Rhora no formato 24h (0-23)
\rhora no formato 12h (1-12)
\mminutos
\yano com dois digitos
\Yano com quatro digitos
\Dformato completo da data
\ssegundos
\wdia da semana no formato com 3 letras (Mon, Tue, ...)
\Pam/pm
\omês no formato de número
\Omês no formato com 3 letras (Jan, Feb, ...)
\ccontador que cresce a cada comando

\’ seguido por qualquer outra letra apenas retorna aquela letra.

Você pode definir o prompt nos seguintes lugares:

  • Variável de Ambiente

    Você pode configurar o prompt em qualquer arquivo de configuração do MySQL, no grupo mysql. Por exemplo:

    [mysql]
    prompt=(\u@\h) [\d]>\_
    

  • Linha de Comando

    Você pode definir a opção --prompt na linha de comando para mysql. Por exemplo:

    shell> mysql --prompt="(\u@\h) [\d]> "
    (utilizador@maquina) [banco de dados]>
    

  • Interativamente

    Você também pode usar o comando prompt (ou \R) para alterar o seu prompt interativamente. Por exemplo:

    mysql> prompt (\u@\h) [\d]>\_
    PROMPT set to '(\u@\h) [\d]>\_'
    (usuario@maquina) [banco de dados]>
    (usuario@maquina) [banco de dados]> prompt
    Returning to default PROMPT of mysql>
    mysql>
    

4.9.3. mysqlcc, The MySQL Control Center

mysqlcc, o Centro de Controle do MySQL, é um cliente independente de plataforma que fornece um interface gráfica ao utilizador (GUI) para o servidor de banco de dados MySQL. Ela suporta uso interativo, incluindo destaque de sintaxe e complementação com tab. Ele fornece gerenciamento de banco de dados e tabelas e permite a administração do servidor.

Atualmente, o mysqlcc executa em plataformas Windows e Linux.

mysqlcc não está incluído com a distribuição MySQL, mas pode ser feito o download separadamente em http://www.mysql.com/downloads/.

mysqlcc suporta as seguintes opções:

  • -?, --help

    Exibe esta ajuda e sai.

  • -b, --blocking_queries

    Usa consultas em bloco.

  • -C, --compress

    Usa o protocolo servidor/cliente compactado.

  • -c, --connection_name=name

    Este é um sinônimo para --server.

  • -d, --database=...

    Banco de dados a ser usado. Isto é útil principalmente no arquivo my.cnf.

  • -H, --history_size=#

    Tamanho do histórico para a janiela de consultas.

  • -h, --host=...

    Conecta a uma determinda máquina.

  • -p[password], --password[=...]

    Senha usada ao se conectar ao servidor. Se uma senha não for especificada na linha de comando, você deverá informá-la. Note que se você usar a forma simplificada -p não é permitido um espaço entre a opçõa e a senha.

  • -g, --plugins_path=name

    Caminho para o diretório onde os plugins do MySQL Control Center estao lacalizados.

  • -P port_num, --port=port_num

    Número da porta TCP/IP para uso na conexão.

  • -q, --query

    Abre uma janela de consulta na inicialização.

  • -r, --register

    Abre a caixa de diálogo 'Register Server' na inicialização.

  • -s, --server=name

    Nome da conexão do MySQL Control Center.

  • -S --socket=...

    Arquivo socket usado na conexão.

  • -y, --syntax

    Habilita destque da sintaxe e complementação

  • -Y, --syntax_file=name

    Arquivo de sintaxe para complementação.

  • -T, --translations_path=name

    Caminho para o diretório onde as traduções do MySQL Control Center estão localizados.

  • -u, --user=#

    Utilizador para login se diferente do utilizador atual.

  • -V, --version

    Exibe a versão e sai.

Você também pode configurar as seguntes variáveis com -O ou --set-variable. Por favor, note que as sintaxes --set-variable=nome=valor e -O name=value estão obsoletas desde o MySQL 4.0, use --var=option:

Variable NameDefaultDescription
connect_timeout0Number of seconds before connection timeout.
local-infile0Disable (0) or enable (1) LOCAL capability for LOAD DATA INFILE
max_allowed_packet16777216Max packet length to send to/receive from server
net_buffer_length16384Buffer for TCP/IP and socket communication
select_limit1000Automatic limit for SELECT when using --safe-updtaes
max_join_size1000000Automatic limit for rows in a join when using --safe-updates

4.9.4. mysqladmin, Administrando um Servidor MySQL

Um utilitário para realizar operações administrativas. A sintaxe é:

shell> mysqladmin [OPÇÕES] comando [opção_do_comando] comando...

Você pode obter uma lista das opção que sua versão do mysqladmin suporta executando mysqladmin --help.

O mysqladmin atual suporta os seguintes comandos:

  • create databasename

    Cria um novo banco de dados.

  • drop databasename

    Apaga um banco de dados e todas suas tabelas.

  • extended-status

    Fornece uma mensagem extendida sobre o estado do servidor.

  • flush-hosts

    Atualiza todos os nomes de máquinas que estiverem no cache.

  • flush-logs

    Atualiza todos os logs.

  • flush-tables

    Atualiza todas as tabelas.

  • flush-privileges

    Recarrega tabelas de permissões (mesmo que reload).

  • kill id,id,...

    Mata threads do MySQL.

  • password

    Configura uma nova senha. Altera a antiga senha para nova senha.

  • ping

    Checa se o mysqld está ativo.

  • processlist

    Exibe lista de threads ativas no servidor, com a instrução SHOW PROCESSLIST. Se a opção --verbose é passada, a saída é como aquela de SHOW FULL PROCESSLIST.

  • reload

    Recarrega tabelas de permissão.

  • refresh

    Atualiza todas as tabelas e fecha e abre arquivos de log.

  • shutdown

    Desliga o servidor.

  • slave-start

    Inicia thread de replicação no slave.

  • slave-stop

    Termina a thread de replicação no slave.

  • status

    Fornece uma mensagem curta sobre o estado do servidor.

  • variables

    Exibe variáveis disponíveis.

  • version

    Obtêm informação de versão do servidor.

Todos comandos podem ser reduzidos para seu prefixo único. Por exemplo:

shell> mysqladmin proc stat
+----+-------+-----------+----+-------------+------+-------+------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-------+-----------+----+-------------+------+-------+------+
| 6 | monty | localhost | | Processlist | 0 | | |
+----+-------+-----------+----+-------------+------+-------+------+
Uptime: 10077 Threads: 1 Questions: 9 Slow queries: 0
Opens: 6 Flush tables: 1 Open tables: 2
Memory in use: 1092K Max memory used: 1116K

O resultado do comando mysqladmin status possui as seguintes colunas:

UptimeNúmero de segundos que o servidor MySQL está funcionando.
ThreadsNúmero de threads ativas (clientes).
QuestionsNúmero de solicitações dos clientes desde que o mysqld foi iniciado.
Slow queriesConsultas que demoram mais que long_query_time segundos. Veja mais informações sobre isto na Seção 4.10.5, “O Log para Consultas Lentas”.
OpensQuantas tabelas foram abertas pelo mysqld.
Flush tablesNúmero de comandos flush..., refresh e reload.
Open tablesNúmero de tabelas abertas atualmente.
Memory in useMemória alocada diretamente pelo código do mysqld (disponível somente quando o MySQL é compilado com --with-debug=full).
Max memory usedMemória máxima alocada diretamente pelo código do mysqld (disponível somente quando o MySQL é compilado com --with-debug=full).

Se você executa um mysqladmin shutdown em um socket (em outras palavras, em um computador onde o mysqld está executando), mysqladmin irá esperar até que o arquivo-pid do MySQL seja removido para garantir que o servidor mysqld parou corretamente.

4.9.5. mysqlbinlog, Executando as Consultas a Partir de um Log Binário

Você pode examinad o arquivo de log binário (see Seção 4.10.4, “O Log Binário”) com o utilitário mysqlbinlog.

shell> mysqlbinlog hostname-bin.001

exibirá todas as consultas contidas no log binário hostname-bin.001, junto com outras informações (tempo da consulta, ID da thread que a executou, o timestamp de quando foi executada, etc).

Você pode colocar a saída do mysqlbinlog em um cliente mysql; isto é usado para recuperações de falhas quando você tem um backup antigo (see Seção 4.5.1, “Backups dos Bancos de Dados”):

shell> mysqlbinlog hostname-bin.001 | mysql

ou

shell> mysqlbinlog hostname-bin.[0-9]* | mysql

Você também pode redirecionar a saída do mysqlbinlog para um arquivo texto, então modifique este arquivo texto (para excluir as consultas que você não quer executar por alguma razão), e então execute as consultas a partir do arquivo texto dentro do mysql.

mysqlbinlog possui a opção position=# que exibirá apenas as consultas cujo offset no log binário é maior ou igual a #.

Se você tiver mais que um log binário para executar no servidor MySQL, o método seguro é fazê-lo em uma única conexão MySQL. Aqui está o que pode ser INseguro:

shell> mysqlbinlog hostname-bin.001 | mysql # DANGER!!
shell> mysqlbinlog hostname-bin.002 | mysql # DANGER!!

Isto causará problemas se o primeiro log binário conter um CREATE TEMPORARY TABLE e o segundo contém uma consulta que utiliza esta tabela temporária: quando o primeiro mysql termina, ele apara a tabela temporária, assim a o segundo mysql relatará um ``tabela desconhecida''. Isto ocorre porque você deve executar todos os log binários que você deseja em uma única conexão, especialmente se você usa tabelas temporárias. Aqui estão dois modos possíveis:

shell> mysqlbinlog hostname-bin.001 hostname-bin.002 | mysql
shell> mysqlbinlog hostname-bin.001 > /tmp/queries.sql
shell> mysqlbinlog hostname-bin.002 >> /tmp/queries.sql
shell> mysql -e "source /tmp/queries.sql"

A partir do MySQL 4.0.14, mysqlbinlog pode preparar uma entrada para o mysql executar um LOAD DATA INFILE a partir de um log binário. Como o log binário contém os dados para carregar (isto é verdade para o MySQL 4.0; o MySQL 3.23 não grava o dado carregado em um log binário, assim o arquivo original era necessário quando se queria executar o conteúdo do log binário), mysqlbinlog copiará este data para um arquivo temporário e imprime um comando LOAD DATA INFILE para o mysql carregar este arquivo temporário. O local onde o arquivo temorário é criado é o diretório temporário por padrão; ele pode ser alterado com a opção local-load do mysqlbinlog.

Antes do MySQL 4.1, mysqlbinlog não podia preaparar saída cabíveis para mysql quando o log binário continha consultas de diferentes threads usando tabelas temporárias de mesmo nome, se estas consultas eram entrelaçadas. Isto está resolvido no MySQL 4.1.

Você também pode usar o mysqlbinlog --read-from-remote-server para ler o log binário diretamente de um servidor MySQL remoto. No entanto, isto é algo que está obsoleto já que queremos tornar fácil de se aplicar os logs binários em servidores MySQL em execução.

mysqlbinlog --help lhe dará mais informações

4.9.6. Usando mysqlcheck para Manutenção de Tabelas e Recuperação em Caso de Falhas

Desde o MySQL versão 3.23.38 você estará apto a usar a nova ferramenta de reparos e verificação de tabelas MyISAM. A diferença para o myisamchk é que o mysqlcheck deve ser usado quando o servidor mysqld estiver em funcionamento, enquanto o myisamchk deve ser usado quando ele não estiver. O benefício é que você não precisará mais desligar o servidor mysqld para verificar ou reparar suas tabelas.

O mysqlcheck utiliza os comandos do servidor MySQL CHECK, REPAIR, ANALYZE e OPTIMIZE de um modo conveniente para o utilizador.

Existem três modos alternativos de chamar o mysqlcheck:

shell> mysqlcheck [OPÇÕES] database [tabelas]
shell> mysqlcheck [OPÇÕES] --databases DB1 [DB2 DB3...]
shell> mysqlcheck [OPÇÕES] --all-databases

Pode ser usado de uma maneira muito similar ao mysqldump quando o assunto for quais bancos de dados e tabelas devem ser escolhidas.

O mysqlcheck tem um recurso especial comparado comparado aos outros clientes; o comportamento padrão, verificando as tabelas (-c), pode ser alterado renomeando o binário. Se você deseja ter uma ferramenta que repare as tabelas como o procedimento padrão, você deve copiar o mysqlcheck para o disco com um outro nome, mysqlrepair, ou crie um link simbólico com o nome mysqlrepair. Se você chamar mysqlrepair agora, ele irá reparar as tabelas como seu procedimento padrão.

Os nomes que podem ser utilizados para alterar o comportamento padrão do mysqlcheck são:

mysqlrepair: A opção padrão será -r
mysqlanalyze: A opção padrão será -a
mysqloptimize: A opção padrão será -o

As opções disponíveis para o mysqlcheck estão listadas aqui, por favor verifique o que a sua versão suporta com o mysqlcheck --help.

  • -A, --all-databases

    Verifica todos os bancos de dados. Isto é o mesmo que --databases com todos os bancos de dados selecionados.

  • -1, --all-in-1

    Em vez de fazer uma consulta para cada tabela, execute todas as consultas separadamente para cada banco de dados. Nomes de tabelas estarão em uma lista separada por vírgula.

  • -a, --analyze

    Análise as tabelas fornecidas.

  • --auto-repair

    Se uma tabela checada está corrompida, ela é corrigida automaticamente. O reparo será feito depois que todas as tabelas tiverem sido checadas e forem detectadas tabelas corrompidas.

  • -#, --debug=...

    Log de saída de depuração. Normalmente é 'd:t:o,filename'

  • --character-sets-dir=...

    Diretório onde estão os conjuntos de caracteres.

  • -c, --check

    Verifca erros em tabelas

  • -C, --check-only-changed

    Verifica somente tabelas que foram alteradas desde a última conferência ou que não foram fechada corretamente.

  • --compress

    Utilize compressão no protocolo server/cliente.

  • -?, --help

    Exibe esta mensagem de ajuda e sai.

  • -B, --databases

    Para verificar diversos bancos de dados. Perceba a diferença no uso; Neste caso nenhuma tabela será fornecida. Todos os argumentos são tratados como nomes de bancos de dados.

  • --default-character-set=...

    Configura o conjunto de caracteres padrão.

  • -F, --fast

    Verifica somente as tabelas que não foram fechadas corretamente

  • -f, --force

    Continue mesmo se nós obtermos um erro de sql.

  • -e, --extended

    Se você estiver utilizando esta opção com CHECK TABLE, irá garantir que a tabela está 100 por cento consistente, mas leva bastante tempo.

    Se você utilizar esta opção com REPAIR TABLE, ele irá executar um comando de reparos na tabela, que não só irá demorar muito tempo para executar, mas também pode produzir muitas linhas de lixo.

  • -h, --host=...

    Conecta à máquina.

  • -m, --medium-check

    Mais rápido que verificação extendida, mas encontra somente 99.99 de todos os erros. Deve resolver a maioria dos casos.

  • -o, --optimize

    Otimizador de tabelas

  • -p, --password[=...]

    Senha para usar ao conectar ao servidor. Se a senha não for fornecida será solicitada no terminal.

  • -P, --port=...

    Número de porta para usar para conexão.

  • -q, --quick

    Se esta opção for utilizada com CHECK TABLE, evita a busca de registros verificando links errados. Esta é a conferência mais rápida.

    Se você estiver utilizando esta opção com REPAIR TABLE, ela tentará reparar somente a árvore de índices. Este é o método de reparo mais rápido para uma tabela.

  • -r, --repair

    Pode corrigir quase tudo exceto chaves únicas que não são únicas.

  • -s, --silent

    Exibe somente mensagens de erro.

  • -S, --socket=...

    Arquivo socket para usar na conexão.

  • --tables

    Sobrepõe a opção --databases (-B).

  • -u, --user=#

    Utilizador para o login, se não for o utilizador atual.

  • -v, --verbose

    Exibe informação sobre os vários estágios.

  • -V, --version

    Exibe informação sobre a versão e sai.

4.9.7. mysqldump, Descarregando a Estrutura de Tabelas e Dados

Utilitário para descarregar um banco de dados ou uma coleção de bancos de dados para backup ou transferencia para outro servidor SQL (Não necessariamente um servidor MySQL). A descarga irá conter instruções SQL para cria a tabela e/ou popular a tabela.

Se a idéia é backup do servidor, deve ser considerada a utilização do mysqlhotcopy. Veja mais informações sobre isto na Seção 4.9.8, “mysqlhotcopy, Copiando Bancos de Dados e Tabelas do MySQL”.

shell> mysqldump [OPÇÕES] banco_de_dados [tabelas]
OR mysqldump [OPÇÕES] --databases [OPÇÕES] BD1 [BD2 BD3...]
OR mysqldump [OPÇÕES] --all-databases [OPÇÕES]

Se você não fornecer nenhuma tabela ou utilizar o --databases ou --all-databases, todo(s) o(s) banco(s) de dados será(ão) descarregado(s).

Você pode obter uma lista das opções que sua versão do mysqldump suporta executando mysqldump --help.

Perceba que se você executar o mysqldump sem a opção --quick ou --opt, o mysqldump irá carregar todo o conjunto do resultado na memória antes de descarregar o resultado. Isto provavelmente será um problema se você está descarregando um banco de dados grande.

Note que se você estiver utilizando uma cópia nova do programa mysqldump e se você for fazer uma descarga que será lida em um servidor MySQL muito antigo, você não deve utilizar as opções --opt ou -e.

mysqldump suporta as seguintes opções:

  • --add-locks

    Adicione LOCK TABLES antes de UNLOCK TABLE depois de cada descarga de tabelas. (Para obter inserções mais rápidas no MySQL.)

  • --add-drop-table

    Adicione um drop table antes de cada instrução create.

  • -A, --all-databases

    Descarrega todos os bancos de dados. Isto irá ser o mesmo que --databases com todos os bancos de dados selecionados.

  • -a, --all

    Inclui todas as opções do create específicas do MySQL.

  • --allow-keywords

    Permite criação de nomes que colunas que são palavras chaves. Isto funciona utilizando o nome da tabela como prefixo em cada nome de coluna.

  • -c, --complete-insert

    Utilize instruções de insert completas (com nomes de colunas).

  • -C, --compress

    Compacta todas as informações entre o cliente e o servidor se ambos suportarem a compactação.

  • -B, --databases

    Para descarregar diversos bancos de dados. Perceba a diferença no uso. Neste caso nenhuma tabela é fornecida. Todos argumentos são estimados como nomes de bancos de dados. USE nome_bd; será incluído na saída antes de cada banco de dados novo.

  • --delayed

    Insere registros com o comando INSERT DELAYED.

  • -e, --extended-insert

    Utiliza a nova sintaxe multilinhas INSERT. (Fornece instruções de inserção mais compactas e mais rápidas.)

  • -#, --debug[=option_string]

    Rastreia a utilização do programa (para depuração).

  • --help

    Exibe uma mensagem de ajuda e sai.

  • --fields-terminated-by=..., --fields-enclosed-by=..., --fields-optionally-enclosed-by=..., --fields-escaped-by=..., --lines-terminated-by=...

    Estas opções são usadas com a opção -T e tem o mesmo significado que as cláusulas correspondentes em LOAD DATA INFILE Veja mais informações sobre isto na Seção 6.4.8, “Sintaxe LOAD DATA INFILE.

  • -F, --flush-logs

    Atualiza o arquivo de log no servidor MySQL antes de iniciar a descarga.

  • -f, --force,

    Continue mesmo se obter um erro de SQL durantes uma descarga de tabela.

  • -h, --host=..

    Descarrega dados do servidor MySQL na máquina especificada. A máquina padrão é localhost.

  • -l, --lock-tables.

    Bloqueia todas as tabelas antes de iniciar a descarga. As tabelas são bloqueadas com READ LOCAL para permitir inserções concorrentes no caso de tabelas MyISAM.

    Por favor, note que ao descarregar multiplas tabelas, --lock-tables bloqueará as tabelas de cada banco de dados separadamente. Assim, usar esta opção não garantirá que suas tabelas sejam logicamente consistentes entre os banco de dados. Tabela me diferentes bancos de dados podem ser descarregadas em estados completamente diferentes.

  • -K, --disable-keys

    /*!40000 ALTER TABLE nome_tb DISABLE KEYS */; e /*!40000 ALTER TABLE nome_tb ENABLE KEYS */; será colocado na saída. Isto fará com que a carga de dados no MySQL 4.0 server seja mais rápida já que os índices são criados depois que todos os dados são inseridos.

  • -n, --no-create-db

    'CREATE DATABASE /*!32312 IF NOT EXISTS*/ nome_bd;' não será colocado na saída. A linha acima será adicionada se a opção --databases ou --all-databases for fornecida.

  • -t, --no-create-info

    Não grava informações de criação de tabelas (A instrução CREATE TABLE.)

  • -d, --no-data

    Não grava nenhuma informação de registros para a tabela. Isto é muito útil se você desejar apenas um dump da estrutura da tabela!

  • --opt

    O mesmo que --quick --add-drop-table --add-locks --extended-insert --lock-tables. Fornece a descarga mais rápida para leitura em um servidor MySQL.

  • -pyour_pass, --password[=sua_senha]

    A senha para usar quando conectando ao servidor. Se não for especificado a parte '=sua_senha', o mysqldump irá perguntar por uma senha.

  • -P port_num, --port=porta_num

    O número da porta TCP/IP usado para conectar a uma máquina. (Isto é usado para conexões a máquinas diferentes de localhost, na qual sockets Unix são utilizados.)

  • -q, --quick

    Não utiliza buffers para as consultas, descarrega diretamente para saída padrão. Utilize mysql_use_result() para fazer isto.

  • -Q, --quote-names

    Coloca os nomes de colunas e tabelas entre ‘`’.

  • -r, --result-file=...

    Direcione a saída para um determinado arquivo. Esta opção deve ser usada no MSDOS porque previne a conversão de nova linha '\n' para '\n\r' (nova linha + retorno de carro).

  • --single-transaction

    Esta opção envia um comando SQL BEGIN antes de carregar os dados do servidor. Ele é mais útil com tabelas InnoDB e nível READ_COMMITTED de isolação da transação, já que neste modo ela fará um dump do estado de consistência do banco de dados no momento que o BEGIN for enviado sem bloquear qualquer aplicação.

    Ao usar esta opção você deve manter em mente que será feito um dump no estado consistente apenas das tabelas transacionais, ex., qualquer tabela MyISAM ou HEAP na qual for feito um dump durante está p[ção pode ainda mudar de estado.

    A opção --single-transaction foi adicionada na versão 4.0.2. Esta opção é mutualmente exclusiva com a opção --lock-tables já que LOCK TABLES já faz um commit da transação anterior internamente.

  • -S /path/to/socket, --socket=/path/to/socket

    O arquivo socket que será utilizado quando conectar à localhost (que é a máquina padrão).

  • --tables

    Sobrepõe a opção --databases (-B).

  • -T, --tab=path-to-some-directory

    Cria um arquivo nome_tabela.sql, que contém os comandos SQL CREATE e um arquivo nome_tabela.txt, que contém os dados, para cada tabela dada. O formato do arquivo .txt é feito de acordo com as opções --fields-xxx e --lines--xxx. Nota: Esta opção só funciona se mysqldump está sendo executado na mesma máquina que o daemon mysqld. Você deve usar uma conta MySQL que tem o privilégio FILE, e o login de utilizador/grupo com o qual o mysqld está sendo executado (normalmente utilizador mysql, grupo mysql) precisa ter permissão para criar/gravar um arquivo no local especificado.

  • -u user_name, --user=user_name

    O nome do utilizador do MySQL para usar ao conectar ao servidor. O valor padrão é seu nome de utilizador no Unix.

  • -O nome=valor, --set-variable=nome=valor

    Confirgura o valor de uma variável. As variáveis possíveis são listadas abaixo. Note que a sintaxe --set-variable=nome=valor e -O nome=valor está obsoleto desde o MySQL 4.0. Use --nome=valor.

  • -v, --verbose

    Modo verbose. Exibe mais informações sobre o que o programa realiza.

  • -V, --version

    Exibe informações de versão e sai.

  • -w, --where='where-condition'

    Faz um dump apenas dos registros selecionados. Note que as aspas são obrigatórias:

    "--where=user='jimf'" "-wuserid>1" "-wuserid<1"
    

  • -X, --xml

    Faz um dump do banco de dados no formato XML

  • -x, --first-slave

    Faz um lock de todas as tabelas de todos os bancos de dados.

  • --master-data

    Como --first-slave, mas também mostra algum comando CHANGE MASTER TO o qual, mais tarde, fará o seu slave iniciar a partir da posição certa no log binário do master, se você tiver configurado o seu slave usando este dump SQL do master.

  • -O net_buffer_length=#, where # < 16M

    Quando estiver criando instruções de inserções em múltiplas linhas (com a opção --extended-insert ou --opt), mysqldump irá criar linhas até o tamanho de net_buffer_length. Se você aumentar esta variável, você também deve se assegurar que a variável max_allowed_packet no servidor MySQL é maior que a net_buffer_length.

O uso mais comum do mysqldump é provavelmente para fazer backups de bancos de dados inteiros. Veja mais informações sobre isto na Seção 4.5.1, “Backups dos Bancos de Dados”.

mysqldump --opt banco_dados > arquivo-backup.sql

Você pode ler de volta no MySQL com:

mysql banco_dados < arquivo-backup.sql

ou

mysql -e "source /path-to-backup/backup-file.sql" database

Entretanto, é muito útil também popular outro servidor MySQL com informações de um banco de dados:

mysqldump --opt banco_dados | mysql ---host=máquina-remota -C banco_dados

É possível descarregar vários bancos de dados com um comando:

mysqldump --databases banco_dados1 [banco_dados2 banco_dados3...] > meus_bancosdedados.sql

Se desejar descarregar todos os bancos de dados, pode-se utilizar:

mysqldump --all-databases > todos_bancos_dados.sql

4.9.8. mysqlhotcopy, Copiando Bancos de Dados e Tabelas do MySQL

O mysqlhotcopy é um script perl que utiliza LOCK TABLES, FLUSH TABLES e cp ou scp para fazer um backup rápido de um banco de dados. É a maneira mais rápida para fazer um backup do banco de dados e de algumas tabelas mas ele só pode ser executado na mesma máquina onde os diretórios dos bancos de dados estão. O mysqlhotcopy só funciona no Unix e apenas para as tabelas MyISAM e ISAM.

mysqlhotcopy nome_bd [/caminho/para/novo_diretório]
mysqlhotcopy nome_bd_2 ... nome_bd_2 /caminho/para/novo_diretório
mysqlhotcopy nome_bd./regex/

mysqlhotcopy suporta as seguintes opções:

  • -?, --help

    Exibe uma tela de ajuda e sai

  • -u, --user=#

    Utilizador para fazer login no banco de dados

  • -p, --password=#

    Senha para usar ao conectar ao servidor

  • -P, --port=#

    Porta para usar ao conectar ao servidor local

  • -S, --socket=#

    Qual socket usar ao conectando a um servidor local

  • --allowold

    Não aborta se o alvo já existir (renomeie-o para _old)

  • --keepold

    Não apaga alvos anteriores (agora renomeados) quando pronto

  • --noindices

    Não inclui arquivos de índices na cópia para deixar o backup menor e mais rápido. Os índices podem ser recostruídos mais tarde com myisamchk -rq..

  • --method=#

    Metódo para copiar (cp ou scp).

  • -q, --quiet

    Seja silencioso exceto em erros

  • --debug

    Habilita depuração

  • -n, --dryrun

    Relata ações sem realizá-las

  • --regexp=#

    Copia todos bancos de dados com nomes que coincidem com a expressão regular

  • --suffix=#

    Sufixo para nomes de bancos de dados copiados

  • --checkpoint=#

    Insere entrada de ponto de controle um uma bd.tabela especificada

  • --flushlog

    Atualiza logs uma vez que todas as tabelas estiverem bloqueadas.

  • --tmpdir=#

    Diretório Temporário (em vez de /tmp).

Você pode utilizar perldoc mysqlhotcopy para obter uma documentação mais completa de mysqlhotcopy.

mysqlhotcopy lê os grupos [client] e [mysqlhotcopy] dos arquivos de opções.

Para poder executar mysqlhotcopy é necessário acesso de escrita ao diretório de backup, privilégio SELECT nas tabelas que desejar copiar e o privilégio Reload no MySQL (para poder executar FLUSH TABLES).

4.9.9. mysqlimport, Importando Dados de Arquivos Texto

mysqlimport fornece uma interface de linha de comando para a instrução SQL LOAD DATA INFILE. A maioria das opções aceitas correspondem diretamente às opções de LOAD DATA INFILE. Veja mais informações sobre isto na Seção 6.4.8, “Sintaxe LOAD DATA INFILE.

mysqlimport é chamado desta maneira:

shell> mysqlimport [opções] banco_de_dados arquivo_texto1 [arquivo_texto2....]

Para cada arquivo texto passadoo na linha de comando, mysqlimport remove qualquer extensão do nome do arquivo e utiliza o resultado para determinar para qual tabela os dados do arquivo serão importados. Por exemplo, arquivos chamados patient.txt, patient.text e patient serão importados para uma tabela chamada patient.

mysqlimport suporta as seguintes opções:

  • -c, --columns=...

    Esta opção recebe uma lista de nomes de campos separados por vírgula como um argumento. A lista de campos é utilizada para criar um comando LOAD DATA INFILE adequado que é então passado ao MySQL. Veja mais informações sobre isto na Seção 6.4.8, “Sintaxe LOAD DATA INFILE.

  • -C, --compress

    Compacta todas as informações entre o cliente e o servidor se ambos suportarem compressão.

  • -#, --debug[=option_string]

    Rastreia o programa (para depuração).

  • -d, --delete

    Esvazie a tabela antes de importar o arquivo texto.

  • --fields-terminated-by=..., --fields-enclosed-by=..., --fields-optionally-enclosed-by=..., --fields-escaped-by=..., --lines-terminated-by=...

    Estas opções tem o mesmo significado que as cláusulas correspondentes para LOAD DATA INFILE. Veja mais informações sobre isto na Seção 6.4.8, “Sintaxe LOAD DATA INFILE.

  • -f, --force

    Ignorar erros. Por exemplo, se uma tabela para um arquivo texto não existir, continue processando quaisquer arquivos restantes. Sem --force, mysqlimport sai se uma tabela não existir.

  • --help

    Exibe uma mensagem de ajuda e sai.

  • -h host_name, --host=host_name

    Importa dados para o servidor MySQL na máquina referida. A máquina padrão é localhost.

  • -i, --ignore

    Veja a descrição para a opção --replace.

  • --ignore-lines=n

    Ignora as primeiras n linhas do arquivo de dados.

  • -l, --lock-tables

    Bloqueia TODAS as tabelas para escrita antes de processar qualquer arquivo texto. Isto garante que todas as tabelas são sincronizadas no servidor.

  • -L, --local

    Lê arquivos de entrada do cliente. Por padrão, é assumido que os arquivos texto estão no servidor se você conectar à localhost (máquina padrão).

  • -pyour_pass, --password[=sua_senha]

    Senha para conectar ao servidor. Se você não especificar a parte '=sua_senha', o mysqlimport irá pedir por uma senha.

  • -P port_num, --port=port_num

    O número da porta TCP/IP para usar quando conectar a uma máquina.

  • --protocol=(TCP | SOCKET | PIPE | MEMORY)

    Para especificar o protocolo de conexão. Novo no MySQL 4.1.

  • -r, --replace

    As opções --replace e --ignore controlam o tratamento de registros de entrada que duplicam registros existentes em valores de chaves únicas. Se você especificar --replace, novos registros substituirão registros que tiverem o mesmo valor na chave unica. Se você especificar --ignore, registros de entrada que duplicariam um registro existente em um valor de chave única são saltados. Se você não especificar nenhuma das duas opções, um erro ocorrerá quando um valor de chave duplicado for encontrado e o resto do arquivo texto será ignorado.

  • -s, --silent

    Modo silencioso. Gera saída somente quando ocorrer algum erro.

  • -S /path/to/socket, --socket=/path/to/socket

    O arquivo socket para usar ao conectar à localhost (máquina padrão).

  • -u user_name, --user=user_name

    O nome de utilizador MySQL para usar ao conectar ao servidor. O valor padrão é seu nome de utilizador atual no Unix.

  • -v, --verbose

    Modo verbose. Gera mais informações na saída.

  • -V, --version

    Exibe informação sobre a versão e sai.

Abaixo um exemblo da utilização de mysqlimport:

$ mysql --version
mysql Ver 9.33 Distrib 3.22.25, for pc-linux-gnu (i686)
$ uname -a
Linux xxx.com 2.2.5-15 #1 Mon Apr 19 22:21:09 EDT 1999 i586 unknown
$ mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test
$ ed
a
100 Max Sydow
101 Count Dracula
.
w imptest.txt
32
q
$ od -c imptest.txt
0000000 1 0 0 \t M a x S y d o w \n 1 0
0000020 1 \t C o u n t D r a c u l a \n
0000040
$ mysqlimport --local test imptest.txt
test.imptest: Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
$ mysql -e 'SELECT * FROM imptest' test
+------+---------------+
| id | n |
+------+---------------+
| 100 | Max Sydow |
| 101 | Count Dracula |
+------+---------------+

4.9.10. mysqlshow, Exibindo Bancos de Dados, Tabelas e Colunas

mysqlshow pode ser usado para exibir rapidamente quais bancos de dados existem, suas tabelas, e o nome das colunas da tabela.

Como o programa mysql você pode obter as mesmas informações com comandos SHOW. Veja mais informações sobre isto na Seção 4.6.8, “Sintaxe de SHOW.

mysqlshow é chamado assim:

shell> mysqlshow [OPÇÕES] [banco_dados [tabela [coluna]]]
  • Se nenhum banco de dados é fornecido, todos os bancos de dados encontrados são exibidos.

  • Se nenhuma tabela é fornecida, todas as tabelas encontradas no banco de dados são exibidas.

  • Se nenhuma coluna for fornecida, todas colunas e tipos de colunas encontrados na tabela são exibidos.

Note que em versões mais novas do MySQL, você só visualiza as tabelas/bancos de dados/colunas para quais você tem algum privilégio.

Se o último argumento conter uma shell ou um meta-caracter do SQL, (*, ?, % ou _) somente o que coincidir com o meta-caracter é exibido. Se um banco de dados conter underscore (_), eles devem ser precedidos por uma barra invertida (algumas shells de Unix irão exigir duas), para se obter tabelas/colunas apropriadamente. '*' são convertidos em metacaracteres '%' do SQL e '?' em metacaracteres '_' do SQL. Isto pode causar alguma confusão quando alguém tentar exibir as colunas para uma tabela com um _, neste caso o mysqlshow exibe somente os nomes de tabelas que casarem com o padrão. Isto é facilmente corrigido adicionando um % extra na linha de comando (como um argumento separador).

4.9.11. mysql_config, Opções para compilação do cliente MySQL

mysql_config lhe fornece informação útil sobre como compilar o seu cliente MySQL e conectá-lo ao MySQL.

mysql_config suporta as seguintes opções:

  • --cflags

    Parâmetros de compilação para encontrar arquivos incluídos e parâmetros e definições de compiladores criticos usados ao compilar a biblioteca libmysqlclient.

  • --include

    Opções de compilador para encontrar arquivos de inclusão do MySQL. (Normalmente se usaria --cflags em vez disto)

  • --libs

    Bibliotecas e opções exigidas para ligar com a biblioteca cliente do MySQL.

  • --libs_r

    Bibliotecas e opções exigidas para ligar a biblioteca cliente do MySQL segura com thread.

  • --socket

    O nome socket padrão, definido ao configurar o MySQL.

  • --port

    O número da porta padrão, definida ao configurar o MySQL.

  • --version

    Número da versão da distribuição MySQL.

  • --libmysqld-libs ou --embedded

    Bibliotecas e opções exigidas para ligar com o servidor embutido MySQL.

Se você executar mysql_config sem nenhuma opção ele exibirá todas as opções suportadas mais os valores de todas elas:

shell> mysql_config
Usage: /usr/local/mysql/bin/mysql_config [OPTIONS]
Options:
--cflags [-I/usr/local/mysql/include/mysql -mcpu=pentiumpro]
--include [-I/usr/local/mysql/include/mysql]
--libs [-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib -lssl -lcrypto]
--libs_r [-L/usr/local/mysql/lib/mysql -lmysqlclient_r -lpthread -lz -lcrypt -lnsl -lm -lpthread]
--socket [/tmp/mysql.sock]
--port [3306]
--version [4.0.16]
--libmysqld-libs [-L/usr/local/mysql/lib/mysql -lmysqld -lpthread -lz -lcrypt -lnsl -lm -lpthread -lrt]

Você pode usá-lo para compilar o cliente MySQL como a seguir:

CFG=/usr/local/mysql/bin/mysql_config
sh -c "gcc -o progname `$CFG --cflags` progname.c `$CFG --libs`"

4.9.12. perror, Explicando Códigos de Erros

Para a maioria dos erros de sistema o MySQL irá, em adição a uma mensagem de texto interna, imprimir também o código de erro do sistema em um dos seguintes estilos: message ... (errno: #) ou message ... (Errcode: #).

Você pode descobrir o que o código de erro significa exeminando a documentação para o seu sistema ou usar o utilitário perror.

perror mostra a descrição para um código de erro do sistema, ou um código de erro do mecanismo de armazenamento MyISAM/ISAM (handler de tabela).

perror é utilizado assim:

shell> perror [OPÇÕES] [CÓDIGO_ERRO [CÓDIGO_ERRO...]]
Exemplo:
shell> perror 13 64
Error code 13: Permission denied
Error code 64: Machine is not on the network

Note que a mensagem de erro sã ona maioria dependente do sistema!

4.9.13. Como Executar Comandos SQL a Partir de um Arquivo Texto

O cliente mysql normalmente é usado de maneira interativa, desta forma:

shell> mysql banco_dados

Entretanto, também é possível colocar seus comandos SQL em um arquivo e dizer ao mysql para ler a entrada a partir deste arquivo. Para fazer isto, crie um arquivo texto arquivo_texto contendo os comandos que você deseja executar. Então execute o mysql como exibido abaixo:

shell> mysql banco_dados < arquivo_texto

Você também pode iniciar seu arquivo texto com uma instrução USER nome_bd. Neste caso, não é necessário especificar o nome do banco de dados na linha de comando:

shell> mysql < arquivo_texto

Se você já está executando o mysql, você pode executar um arquivo de script SQL usando o comando source:

mysql> source filename;

Para mais informações sobre o modo batch, Seção 3.5, “Utilizando mysql em Modo Batch”.