Comando SQL para exibir histórico de consultas

Respostas:

161

experimentar

 cat ~/.mysql_history

isso irá mostrar a você todos os comandos mysql executados no sistema

Maysam Torabi
fonte
2
bem, não todos , a supressão ocorre para alguns que contêm strings como "senha".
mckenzm
1
Ele também não costuma estar atualizado com sua CLI MySQL aberta, portanto, é provável que você tenha que fazer o exitMySQL e ler o arquivo.
Joel Mellon
1
Isso mostra apenas os comandos executados pelo usuário que está conectado.
Christia
1
Como fazer isso no windows
ßiansor Å. Ålmerol
Existe a possibilidade de que outros comandos sejam suprimidos ou que estejam desordenados? E o log se atualiza em tempo real?
Drubio
32

Para MySQL> 5.1.11 ou MariaDB

  1. SET GLOBAL log_output = 'TABLE';
  2. SET GLOBAL general_log = 'ON';
  3. Dê uma olhada na mesa mysql.general_log

Se você deseja gerar um arquivo de log:

  1. SET GLOBAL log_output = "FILE";
  2. SET GLOBAL general_log_file = "/path/to/your/logfile.log"
  3. SET GLOBAL general_log = 'ON';

Conforme mencionado por jeffmjack nos comentários, essas configurações serão esquecidas antes da próxima sessão, a menos que você edite os arquivos de configuração (por exemplo /etc/mysql/my.cnf, edite e reinicie para aplicar as alterações).

Agora, se você quiser, pode tail -f /var/log/mysql/mysql.log

Mais informações aqui: Variáveis ​​de sistema do servidor

GTodorov
fonte
3
Apenas alguns esclarecimentos para o acima: Os comandos de copiar e colar aqui são para uma única sessão do MySQL, por exemplo, você pode inseri-los na linha de comando interativa do MySQL. Se você quiser que eles sejam um recurso permanente de sua instância do MySQL, você precisa colocar esses comandos em /etc/mysql/my.cnf e reiniciar o serviço MySQL.
jeffmjack
Observe também que o registro será interrompido se /path/to/your/logfile.logfor excluído, até que você execute SET GLOBAL general_log_file = "/path/to/your/logfile.log";novamente (ou talvez reinicie a sessão se você editou a configuração?).
Skippy le Grand Gourou
21

(Linux) Abra o seu Terminal e ctrl+alt+t execute o comando

 cat ~/.mysql_history

você obterá todo o histórico de consultas do mysql anterior, aproveite :)

Vamsidhar Muggulla
fonte
18

Você vai encontrar lá

~/.mysql_history

Você o tornará legível (sem os escapes) assim:

sed "s/\\\040/ /g" < .mysql_history
DimiDak
fonte
2

Veja ~/.myslgui/query-browser/history.xml aqui você pode encontrar as últimas consultas feitas com mysql_query_browser (alguns dias atrás)

user4493696
fonte
0

Você pode ver o histórico de ~ / .mysql_history. No entanto, o conteúdo do arquivo é codificado por wctomb. Para visualizar o conteúdo:

shell> cat ~ / .mysql_history | python2.7 -c "import sys; print (''. join ([l.decode ('unicode-escape') para l em sys.stdin]))"

Fonte: verificar o histórico de consultas do MySQL na linha de comando

GoYun.Info
fonte
-1

Você pode olhar o cache de consulta: http://www.databasejournal.com/features/mysql/article.php/3110171/MySQLs-Query-Cache.htm, mas pode não lhe dar acesso às consultas reais e será muito acertar e errar se funcionou (trocadilho sutil intencional)

Mas o MySQL Query Browser muito provavelmente mantém sua própria lista de consultas que executa, fora do mecanismo do MySQL. Você teria que fazer o mesmo em seu aplicativo.

Edit: veja o comentário de dan m levando a isto: Como mostrar as últimas consultas executadas no MySQL? parece bom.

Kieren Johnstone
fonte