Risposte:
Per quelli benedetti con MySQL> = 5.1.12, puoi controllare questa opzione a livello globale in fase di esecuzione:
SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'ON';
mysql.general_log
Se si preferisce l'output in un file anziché in una tabella:
SET GLOBAL log_output = "FILE";
il valore predefinito .SET GLOBAL general_log_file = "/path/to/your/logfile.log";
SET GLOBAL general_log = 'ON';
Preferisco questo metodo alla modifica dei file .cnf perché:
my.cnf
file e potenzialmente accendendo in modo permanente la registrazione/var/log /var/data/log
/opt /home/mysql_savior/var
Per ulteriori informazioni, consultare il Manuale di riferimento di MySQL 5.1 - Variabili di sistema del server - general_log
È possibile abilitare un registro delle query generale per quel tipo di diagnostica. In genere, tuttavia, non si registrano tutte le query SELECT su un server di produzione, è un killer delle prestazioni.
Modifica la tua configurazione MySQL, ad esempio /etc/mysql/my.cnf - cerca o aggiungi una linea come questa
[mysqld]
log = /var/log/mysql/mysql.log
Riavvia mysql per raccogliere quel cambiamento, ora puoi farlo
tail -f /var/log/mysql/mysql.log
Ehi presto, puoi guardare le domande appena arrivano.
Puoi fare ciò che scorre per monitorare i log delle query mysql.
Apri il file di configurazione mysql my.cnf
sudo nano /etc/mysql/my.cnf
Cerca le seguenti righe sotto [mysqld]
un'intestazione e decommenta queste righe per abilitare il registro
general_log_file = /var/log/mysql/mysql.log
general_log = 1
Riavvia il tuo server mysql per riflettere le modifiche
sudo service mysql start
Monitorare il registro del server mysql con il seguente comando nel terminale
tail -f /var/log/mysql/mysql.log
1) Se la registrazione mysql generale è abilitata, possiamo controllare le query nel file di registro o nella tabella in base a ciò che abbiamo menzionato nella configurazione. Verifica cosa è abilitato con il seguente comando
mysql> show variables like 'general_log%';
mysql> show variables like 'log_output%';
Se abbiamo bisogno della cronologia delle query nella tabella, allora
Execute SET GLOBAL log_output = 'TABLE';
Execute SET GLOBAL general_log = 'ON';
Dai un'occhiata alla tabella mysql.general_log
Se si preferisce l'output in un file:
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) Possiamo anche controllare le query nel file .mysql_history cat ~ / .mysql_history
Forse potresti scoprirlo guardando il registro delle query .
Se mysql binlog è abilitato, puoi controllare i comandi eseguiti dall'utente eseguendo il seguente comando nella console di linux passando alla directory mysql binlog
mysqlbinlog binlog.000001 > /tmp/statements.sql
abilitare
[mysqld]
log = /var/log/mysql/mysql.log
o il registro generale avrà un effetto sulle prestazioni di mysql
Se non hai voglia di modificare la configurazione di MySQL, puoi utilizzare un profiler SQL come "Neor Profile SQL" http://www.profilesql.com .
Dopo aver letto la risposta di Paul, ho continuato a scavare per ulteriori informazioni su https://dev.mysql.com/doc/refman/5.7/en/query-log.html
Ho trovato un codice davvero utile per una persona. Ecco il riassunto del contesto.
(Nota: il seguente codice non è mio)
Questo script è un esempio per mantenere pulita la tabella che ti aiuterà a ridurre le dimensioni della tabella. Come dopo un giorno, ci saranno circa 180k query di log. (in un file, sarebbe 30 MB al giorno)
È necessario aggiungere una colonna aggiuntiva (event_unix) e quindi è possibile utilizzare questo script per mantenere pulito il registro ... aggiornerà il timestamp in un timestamp Unix, eliminerà i log più vecchi di 1 giorno e quindi aggiornerà event_time in Timestamp da event_unix ... sembra un po 'confuso, ma funziona alla grande.
Comandi per la nuova colonna:
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';
Script di pulizia:
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';
Il merito va a Sebastian Kaiser (autore originale del codice).
Spero che qualcuno lo troverà utile come ho fatto io.
Puoi guardare quanto segue in Linux
cd /root
ls -al
vi .mysql_history
Potrebbe essere d'aiuto