/ / Acompanhe consultas MySQL com mysqlsniffer no Ubuntu

Acompanhe as consultas MySQL com mysqlsniffer no Ubuntu

Você tem um servidor de banco de dados de produção e não pode ativar o log 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ê precisará compilar um pouco, mas valerá a pena. Observe que isso geralmente não funciona em conexões locais, embora você possa tentar.

Primeiro, você precisa instalar o libpcap-dev, que é a biblioteca de desenvolvimento que permite que um aplicativo cheire 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 brilhante 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 em que o MySQL está escutando. Para mim, é eth0.

sudo / caminho / para / mysqlsniffer eth0

Um monte de coisas começa a passar ... vamos filtrá-lo um pouco mais para que possamos obter as consultas e não todo o excesso de dados.

$ sudo / caminho / para / mysqlsniffer –no-mysql-hdrs eth0 | grep COM_QUERY

192.168.73.1.2622> servidor: COM_QUERY: SELECT @@ sql_mode
192.168.73.1.2622> servidor: COM_QUERY: SET SESSION sql_mode = ”
192.168.73.1.2622> server: COM_QUERY: SET NAMES utf8
192.168.73.1.1636> servidor: COM_QUERY: SELECT @@ SQL_MODE
192.168.73.1.1636> server: COM_QUERY: MOSTRA COLUNAS CHEIAS DE `db2842_howto` .wp_users`

Ah, agora estamos lá ... 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 [OPÇÕES] INTERFACE

OPÇÕES:
–Port N Ouça o MySQL na porta número N (padrão 3306)
–Verbose Mostra informações extras 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 Mostrar estado
–40 O servidor MySQL é a versão 4.0
–Dump Despeja todos os pacotes em hexadecimal
–Help Imprima isto

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

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