Como guardar o histórico dos comandos no MySQL – Elias Praciano
Categories
Banco de dados Tutoriais

Como guardar o histórico dos comandos no MySQL

Com a opção tee, é possível guardar uma ou várias sessões de uso do MySQL, com os comandos digitados e seus resultados, para uso posterior em um arquivo texto comum.

Você pode armazenar o histórico de todos os comandos fornecidos no cliente MySQL, bem como seus resultados, em um arquivo, para uso posterior.
A dica é útil para programadores, que desejem montar scripts em PHP, Perl, Python etc. posteriormente, com o uso das informações obtidas em uma seção de conexão ao servidor do MySQL.
Captura de tela da saída do histórico do MySQL
Ao usar o cliente MySQL, é possível ver o resultado imediato de seus comandos — o que te permite saber o que funciona ou não.
Se você está aprendendo MySQL, pode ser interessante ter uma relação de comandos referentes à sua lição — que pode ser enviado, por email ou qualquer outra forma, para ser analisado por alguém mais experiente e que possa te ajudar com alguma dificuldade.

Execute o MySQL com a opção –tee para gravar seu histórico

O MySQL, por padrão, já grava o histórico dos seus comandos. O que queremos é ter acesso a este histórico, de fora do MySQL — para ter a liberdade de fazer o que quisermos com esta informação.
Para isto, execute o MySQL com a opção --tee, conforme o exemplo abaixo:

mysql -u root -p --tee=MySQL-historico.txt

Destrinchando o comando:

  • mysql -u root -p — rotina tradicional de conexão ao banco de dados.
  • --tee=MySQL-historico.txt — indica ao tee para enviar a saída (log) para o arquivo MySQL-historico.txt. Você pode usar qualquer outro nome que quiser para este artigo.

O log gerado pelo tee descarta uma série de lixo desnecessário, deixando apenas o que interessa gravado no arquivo.

No Unix (e também no Linux), o comando tee lê da entrada padrão e envia para uma saída à sua escolha — que pode ser um arquivo.

Como ligar o logging externo de dentro do MySQL

Se você se esqueceu de desligar o logging em um arquivo externo, é possível fazer isto de dentro do próprio MySQL.
Use os comandos \T e \t para ligar e desligar, respectivamente, o logging em arquivo externo.
No exemplo, abaixo, o logging será feito no arquivo hist.txt:

mysql> \T hist.txt
Logging to file 'hist.txt'
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| tutorial           |
+--------------------+
4 rows in set (0.00 sec)

mysql> \t
Outfile disabled.
mysql> 

Para ver o log, na linha de comando (fora do cliente MySQL), eu posso usar o comando cat:

cat hist.txt 
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| tutorial           |
+--------------------+
4 rows in set (0.00 sec)

mysql> \t

Ou, então, posso abrir o arquivo hist.txt com o meu editor favorito.

Captura de tela do editor mousepad com o log do mysql
Clique, para ampliar.

O MySQL acrescenta os novos logs aos já existentes. Ele não sobrescreve o log anterior.
Você precisa apagar o arquivo anterior ou criar um novo, se não quiser que o próximo log seja acrescentado a alguma preexistente.
A capacidade de criar arquivos tee, foi introduzida no MySQL 3.23.28.

By Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como "Rick and Morty" e "BoJack Horseman".
Me siga no Twitter e vamos trocar ideias!

One reply on “Como guardar o histórico dos comandos no MySQL”

Ele arquivo de historico só pega os registros que forem executados dentro do command shell do Mysql, eu como exemplo estou usando o Mysql WorkBench fiz varios inserts em uma tabela de teste e nao pegou nenhuma informação.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.