
Comprei um programa que roda na minha máquina CentOS. Está escrito em PHP. Ele usa um banco de dados MYSQL.
Uma das funções do programa é cadastrar novos usuários. Ele usa uma consulta SQL para adicionar os usuários. Quero escrever um programa python que também possa adicionar usuários a esse banco de dados, mas não sei quais propriedades e tabelas ele adiciona (é um banco de dados bastante grande).
É possível monitorar de alguma forma quais consultas SQL este programa está enviando para o MYSQL?
Responder1
Existem duas maneiras de fazer isso, a mais simples (e talvez não seja boa o suficiente) e a mais complicada, que lhe dará 100% o que você procura.
Mais simples é apenas procurar as consultas na hora certa enquanto elas estão sendo executadas com
SHOW FULL PROCESSLIST
o comando. Isso mostrará as consultas, mas se a ação (consulta SQL que você está procurando) raramente for executada, você terá que esperar muito tempo e emitir o comando acima com frequência para obter o resultado desejado. Também existe uma maneira melhor.Inicie o MySQL com o log habilitado e então você poderá ver todas as consultas SQL a partir da reinicialização do servidor MySQL. O problema aqui é que o arquivo de log pode ser muito grande e pode levar muito tempo para inexperientes encontrarem o que você está procurando, mas essa abordagem geralmente é melhor. A opção é simples:
mysqld --log=name_of_log_file.log
É simples assim.
Apenas um aviso: quando você encontrar o que procurava, reinicie o MySQL, mas desta vez com o log desabilitado, pois isso irá acelerar o banco de dados e não ocupará espaço em disco no seu servidor.
Responder2
Para ver quais consultas MySQL estão sendo executadas em qualquer plataforma com mysql.
A consulta MySQL é como abaixo,
SHOW FULL PROCESSLIST
para obter informações detalhadas.SHOW PROCESSLIST
para consultas atualmente sendo processadas.
Abra # mysql
no terminal.
mysql> SHOW FULL PROCESSLIST;
mysql> SHOW PROCESSLIST;
para obter mais documentação, dê uma olhada emlista de processos de exibição.