
CentOS マシンで動作するプログラムを購入しました。これは PHP で書かれており、MYSQL データベースを使用します。
プログラムの機能の 1 つは、新しいユーザーを登録することです。SQL クエリを使用してユーザーを追加します。このデータベースにユーザーを追加できる Python プログラムを作成したいのですが、どのようなプロパティとテーブルが追加されるかわかりません (かなり大きなデータベースです)。
このプログラムが MYSQL に送信している SQL クエリを何らかの方法で監視することは可能ですか?
答え1
それには 2 つの方法があります。より簡単な方法 (十分ではないかもしれませんが) と、探しているものを 100% 得るより複雑な方法です。
もっと簡単な方法は、コマンドで実行されているときに、その時点でクエリを探すことです
SHOW FULL PROCESSLIST
。そうすればクエリが表示されますが、アクション (探している SQL クエリ) がほとんど実行されない場合は、長い時間待機し、上記のコマンドを頻繁に発行して、必要な結果を得る必要があります。もっと良い方法もあります。ログを有効にして MySQL を起動すると、MySQL サーバーの再起動からすべての SQL クエリを表示できるようになります。ここでの問題は、ログ ファイルが非常に大きくなる可能性があり、経験の浅いユーザーが探しているものを見つけるのに時間がかかる可能性があることですが、このアプローチは一般的に優れています。オプションは簡単です。
mysqld --log=name_of_log_file.log
とても簡単です。
注意: 探していたものが見つかったら、今度はログ記録を無効にして MySQL を再起動してください。そうすることで、データベースが高速化され、サーバーのディスク領域を占有しなくなります。
答え2
MySQL を搭載した任意のプラットフォームで実行されている MySQL クエリを確認します。
MySQLクエリは以下のとおりです。
SHOW FULL PROCESSLIST
詳細情報については。SHOW PROCESSLIST
現在処理中のクエリについて。
# mysql
ターミナルで開きます。
mysql> SHOW FULL PROCESSLIST;
mysql> SHOW PROCESSLIST;
詳しい資料については、プロセスリストを表示します。