
Ich habe ein Programm gekauft, das auf meiner CentOS-Maschine läuft. Es ist in PHP geschrieben. Es verwendet eine MySQL-Datenbank.
Eine der Funktionen des Programms besteht darin, neue Benutzer zu registrieren. Es verwendet eine SQL-Abfrage, um die Benutzer hinzuzufügen. Ich möchte ein Python-Programm schreiben, das auch Benutzer zu dieser Datenbank hinzufügen kann, aber ich weiß nicht, welche Eigenschaften und Tabellen es hinzufügt (es ist eine ziemlich große Datenbank).
Ist es irgendwie möglich, zu überwachen, welche SQL-Abfragen dieses Programm an MySQL sendet?
Antwort1
Es gibt zwei Möglichkeiten, wie Sie das machen können: eine einfachere (und vielleicht nicht gute genug) und eine kompliziertere, mit der Sie Ihr Ziel zu 100 % erreichen.
Einfacher ist es, einfach nach Abfragen zu suchen, wenn diese mit
SHOW FULL PROCESSLIST
dem Befehl ausgeführt werden. Dadurch werden Ihnen Abfragen angezeigt, aber wenn die Aktion (die gesuchte SQL-Abfrage) selten ausgeführt wird, müssen Sie lange warten und den obigen Befehl oft eingeben, um das gewünschte Ergebnis zu erhalten. Es gibt auch einen besseren Weg.Starten Sie MySQL mit aktivierter Protokollierung. Anschließend können Sie alle SQL-Abfragen nach dem Neustart des MySQL-Servers sehen. Das Problem dabei ist, dass die Protokolldatei sehr groß sein kann und es für Laien zeitaufwändig sein kann, das Gesuchte zu finden. Dieser Ansatz ist jedoch im Allgemeinen besser. Die Option ist einfach:
mysqld --log=name_of_log_file.log
So einfach ist das.
Nur eine Warnung: Wenn Sie gefunden haben, wonach Sie gesucht haben, starten Sie MySQL neu, dieses Mal jedoch mit deaktivierter Protokollierung, da dies die Datenbank beschleunigt und keinen Speicherplatz auf Ihrem Server beansprucht.
Antwort2
Um zu sehen, welche MySQL-Abfragen auf einer Plattform mit MySQL ausgeführt werden.
Die MySQL-Abfrage lautet wie folgt:
SHOW FULL PROCESSLIST
für detaillierte Informationen.SHOW PROCESSLIST
für aktuell in Bearbeitung befindliche Anfragen.
# mysql
Im Terminal öffnen .
mysql> SHOW FULL PROCESSLIST;
mysql> SHOW PROCESSLIST;
Weitere Dokumentation finden Sie unterProzessliste anzeigen.