回答:
MySQL> = 5.1.12に恵まれている場合は、実行時にこのオプションをグローバルに制御できます。
SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'ON';
mysql.general_log
テーブルではなくファイルに出力したい場合:
SET GLOBAL log_output = "FILE";
デフォルト。SET GLOBAL general_log_file = "/path/to/your/logfile.log";
SET GLOBAL general_log = 'ON';
次の理由により、.cnfファイルの編集よりもこの方法を使用します。
my.cnf
ファイルを編集しておらず、ログを永続的にオンにしている可能性があります/var/log /var/data/log
/opt /home/mysql_savior/var
詳細については、MySQL 5.1リファレンスマニュアル-サーバーシステム変数-general_logを参照してください。
そのような診断の一般クエリログを有効にすることができます。ただし、一般に、運用サーバーですべてのSELECTクエリをログに記録するわけではありませんが、これはパフォーマンスキラーです。
/etc/mysql/my.cnfなどのMySQL設定を編集します-このような行を探すか追加します
[mysqld]
log = /var/log/mysql/mysql.log
mysqlを再起動してその変更を取得します。
tail -f /var/log/mysql/mysql.log
ねえpresto、あなたは彼らが入ってくるクエリを見ることができます。
mysqlクエリログを監視するためのフローを実行できます。
mysql構成ファイルmy.cnfを開きます。
sudo nano /etc/mysql/my.cnf
[mysqld]
見出しの下の次の行を検索し、これらの行のコメントを外してログを有効にします
general_log_file = /var/log/mysql/mysql.log
general_log = 1
mysqlサーバーを再起動して変更を反映します
sudo service mysql start
端末で次のコマンドを使用してmysqlサーバーログを監視する
tail -f /var/log/mysql/mysql.log
1)一般的なmysqlロギングが有効になっている場合は、構成で言及した内容に基づいて、ログファイルまたはテーブルでクエリを確認できます。次のコマンドで何が有効になっているかを確認します
mysql> show variables like 'general_log%';
mysql> show variables like 'log_output%';
テーブルにクエリ履歴が必要な場合
Execute SET GLOBAL log_output = 'TABLE';
Execute SET GLOBAL general_log = 'ON';
テーブルmysql.general_logを見てください。
ファイルに出力したい場合:
SET GLOBAL log_output = "FILE"; which is set by default.
SET GLOBAL general_log_file = "/path/to/your/logfile.log";
SET GLOBAL general_log = 'ON';
2).mysql_historyファイルcat〜/ .mysql_historyでクエリを確認することもできます
場合はMySQLのバイナリログが有効になっているあなたは、コマンドを確認することができビンログディレクトリをMySQLへの閲覧により、Linuxコンソールで次のコマンドを実行することで、ユーザが走りました
mysqlbinlog binlog.000001 > /tmp/statements.sql
有効にする
[mysqld]
log = /var/log/mysql/mysql.log
または一般的なログはmysqlのパフォーマンスに影響を与えます
MySQLの設定を変更したくない場合は、「Neor Profile SQL」http://www.profilesql.comなどのSQLプロファイラーを使用できます。
Paulの回答を読んだ後、https://dev.mysql.com/doc/refman/5.7/en/query-log.htmlの詳細を掘り下げました
人が本当に役立つコードを見つけました。これがコンテキストの要約です。
(注:次のコードは私のものではありません)
このスクリプトは、テーブルサイズを小さくするのに役立つテーブルをクリーンに保つための例です。1日後のように、ログのクエリは約180kになります。(ファイルでは、1日あたり30MBになります)
追加の列(event_unix)を追加する必要があり、このスクリプトを使用してログをクリーンに保つことができます...タイムスタンプをUnix-timestampに更新し、1日より古いログを削除して、event_timeをTimestampに更新しますevent_unixから...少しわかりづらいように聞こえますが、うまく機能しています。
新しい列のコマンド:
SET GLOBAL general_log = 'OFF';
RENAME TABLE general_log TO general_log_temp;
ALTER TABLE `general_log_temp`
ADD COLUMN `event_unix` int(10) NOT NULL AFTER `event_time`;
RENAME TABLE general_log_temp TO general_log;
SET GLOBAL general_log = 'ON';
クリーンアップスクリプト:
SET GLOBAL general_log = 'OFF';
RENAME TABLE general_log TO general_log_temp;
UPDATE general_log_temp SET event_unix = UNIX_TIMESTAMP(event_time);
DELETE FROM `general_log_temp` WHERE `event_unix` < UNIX_TIMESTAMP(NOW()) - 86400;
UPDATE general_log_temp SET event_time = FROM_UNIXTIME(event_unix);
RENAME TABLE general_log_temp TO general_log;
SET GLOBAL general_log = 'ON';
クレジットはSebastian Kaiser(コードの元のライター)に提供されます。
誰かが私と同じようにそれが役立つと思うことを願っています。
あなたはlinuxで以下を見ることができます
cd /root
ls -al
vi .mysql_history
役立つかもしれません