MariaDB, A Ferramenta de Linha de Comando


O MariaDB é 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 MariaDB a utilizar mysql_use_result() no lugar de mysql_store_result() para recuperar o conjunto de resultados.

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

O MariaDB Suporta as seguintes opções:

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 MariaDB 4.0, use --var=option:

Nome Variável Padrão Descrição
connect_timeout 0 Número de seguntos antes de esgotar o tempo da conexão
local-infile 0 Disabilita (0) ou habilita (1) capacidade LOCAL para LOAD DATA INFILE
max_allowed_packet 16777216 Tamanho máximo do pacote para enviar/receber do servidor
net_buffer_length 16384 Tamanho do buffer para comunicação TCP/IP e socket
select_limit 1000 Limite automático para SELECT quando utilizar --safe-updtaes
max_join_size 1000000 Limite automático para registros em uma join quando utilizar --safe-updtaes.

Se o cliente MariaDB 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 usuário. 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: MariaDB 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 usuário @a foi perdida com a conexão e depois da reconexão ela é indefinida. Para se proteger deste risco, você pode iniciar o cliente MariaDB com a opção --disable-reconnect.

Se você digitar 'help' na linha de comando, MariaDB 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 MariaDB que afetam suas consultas.

Uma opção útil para iniciantes (introduzido no MariaDB versão 3.23.11) é o --safe-updates (ou --i-am-a-dummy para usuários que uma vez possam ter feito um DELETE FROM nome_tabela mas esqueceram da cláusula WHERE). Quando utilizar esta opção, o MariaDB envia o seguinte comando ao servidor MariaDB 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 MariaDB. Leia "Sintaxe de SET".

O efeito da opção acima é:

Algumas dicas úteis sobre o cliente MariaDB:

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 MariaDB 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ê 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 MariaDB é 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 MariaDB.

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

Opção Descrição
\v versão mysqld
\d banco de dados em uso
\h máquina na qual está conectado
\p porta na qual está conectado
\u nome do usuário
\U nome_usuário@maquina
\\ '\'
\n nova quebra de linha
\t tab
\ espaço
\_ espaço
\R hora no formato 24h (0-23)
\r hora no formato 12h (1-12)
\m minutos
\y ano com dois digitos
\Y ano com quatro digitos
\D formato completo da data
\s segundos
\w dia da semana no formato com 3 letras (Mon, Tue, ...)
\P am/pm
\o mês no formato de número
\O mês no formato com 3 letras (Jan, Feb, ...)
\c contador que cresce a cada comando

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

Você pode definir o prompt nos seguintes lugares:

Retornar