Pagina inicial » como » Acompanhe as consultas do MySQL com o mysqlsniffer no Ubuntu

    Acompanhe as consultas do MySQL com o mysqlsniffer no Ubuntu

    Você tem um servidor de banco de dados de produção e não é possível ativar o log de consulta ... 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 uma pequena compilação, mas valerá a pena. Observe que isso geralmente não funcionará para conexões locais, embora você seja bem-vindo para 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 instala libpcap-dev

    Agora vamos fazer 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 na qual o MySQL está escutando. Para mim, é eth0.

    sudo / caminho / para / 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 / 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> servidor: COM_QUERY: SET NAMES utf8
    192.168.73.1.1636> servidor: COM_QUERY: SELECT @@ SQL_MODE
    192.168.73.1.1636> server: COM_QUERY: MOSTRAR COLUNAS COMPLETAS 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 [OPTIONS] INTERFACE

    OPÇÕES:
    -porta N Ouça o MySQL na porta número N (padrão 3306)
    -verbose Mostrar informações extras de 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 Show Estado
    -v40 servidor MySQL é a versão 4.0
    -despejo despejar todos os pacotes em hex
    -ajuda Imprima esta

    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 apenas ativar o log de consulta.