Acompanhe as consultas do MySQL com o mysqlsniffer no Ubuntu

Acompanhe as consultas do MySQL com o mysqlsniffer no Ubuntu
Acompanhe as consultas do MySQL com o mysqlsniffer no Ubuntu

Vídeo: Acompanhe as consultas do MySQL com o mysqlsniffer no Ubuntu

Vídeo: Acompanhe as consultas do MySQL com o mysqlsniffer no Ubuntu
Vídeo: Macro para armazenar informações em um banco de dados no Excel - YouTube 2024, Marcha
Anonim

Você tem um servidor de banco de dados de produção e não pode ativar o registro de consultas … então, como você vê as consultas sendo executadas no banco de dados?

A resposta: use um sniffer de rede modificado para analisar os pacotes MySQL e decodificá-los. Você terá que fazer um pouco de compilação, mas valerá a pena. Observe que isso geralmente não funcionará para conexões locais, embora você possa tentar.

Primeiro, você precisa instalar o libpcap-dev, que é a biblioteca de desenvolvimento que permite que um aplicativo detecte pacotes de rede.

sudo apt-get install libpcap-dev

Agora vamos criar um diretório, baixar o código-fonte e compilá-lo

mkdir mysqlsniffer

cd mysqlsniffer

wget hackmysql.com/code/mysqlsniffer.tgz

tar xvfz mysqlsniffer.tgz

gcc -O2 -lpcap -o mysqlsniffer mysqlsniffer.c packet_handlers.c misc.c

Neste ponto, temos um novo executável chamado mysqlsniffer em nosso diretório de origem. Você pode copiá-lo onde quiser (em algum lugar do caminho seria útil)

Para executar o mysqlsniffer, você precisa especificar a interface de rede que o MySQL está escutando. Para mim, é eth0.

sudo /path/to/mysqlsniffer eth0

Muitas coisas começam a voar … vamos filtrar um pouco mais para que possamos obter as consultas e não todos os dados em excesso.

$ sudo /path/to/mysqlsniffer –no-mysql-hdrs eth0 | grep COM_QUERY

192.168.73.1.2622 > server: COM_QUERY: SELECT @@sql_mode 192.168.73.1.2622 > server: COM_QUERY: SET SESSION sql_mode=” 192.168.73.1.2622 > server: COM_QUERY: SET NAMES utf8 192.168.73.1.1636 > server: COM_QUERY: SELECT @@SQL_MODE 192.168.73.1.1636 > server: COM_QUERY: SHOW FULL COLUMNS FROM `db2842_howto`.`wp_users`

Ah, agora estamos … todos os tipos de informações de consulta, sem ter que reiniciar o MySQL.

Aqui estão as opções completas para o comando:

Uso: mysqlsniffer [OPTIONS] INTERFACE

OPÇÕES: –Port N Escute o MySQL na porta número N (padrão 3306) –Verbose Mostra informação extra sobre pacotes –Tcp-ctrl Mostra pacotes de controle TCP (SYN, FIN, RST, ACK) –Net-hdrs Mostra os principais valores de cabeçalho IP e TCP –No-mysql-hdrs Não mostra o cabeçalho do MySQL (ID e comprimento do pacote) Estado Estado Show –V40 O servidor MySQL é a versão 4.0 –Dump Despeja todos os pacotes em hex –Help Imprima isto

Código-fonte original e mais informações em: https://hackmysql.com/mysqlsniffer

Se você estiver executando em um servidor de desenvolvimento, seria mais fácil apenas ativar o log de consulta.

Recomendado: