Come abilitare la logging di MySQL?

Sto eseguendo MySQL 5.0.45 su OS X 10.6.1 e non posso get MySQL per registrare nulla. Sto eseguendo il debug di un'applicazione e ho bisogno di visualizzare tutte le query e gli errori.

Ho aggiunto al file etc / my.cnf:

[mysqld] bind-address = 127.0.0.1 log = /var/log/mysqld.log log-error = /var/log/mysqld.error.log 

Ho usato sudo per creare due file di registro, impostare le autorizzazioni a 644, quindi riavviare MySQL.

Ho fatto riferimento a Dove è il mio log mysql su OS X? per risolvere i problemi.

In esecuzione:

 ps auxww|grep [m]ysqld 

Ritorni:

 _mysql 71 0.0 0.8 646996 15996 ?? S 7:31PM 0:01.10 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/Macintosh-41.local.pid _mysql 46 0.0 0.0 600336 744 ?? Ss 7:30PM 0:00.03 /bin/sh /usr/local/mysql/bin/mysqld_safe 

E in esecuzione:

 $(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log' 

Ritorni:

 log /var/log/mysqld.log log-bin (No default value) log-bin-index (No default value) log-bin-trust-function-creators FALSE log-bin-trust-routine-creators FALSE log-error /var/log/mysqld.error.log log-isam myisam.log log-queries-not-using-indexes FALSE log-short-format FALSE log-slave-updates FALSE log-slow-admin-statements FALSE log-slow-queries (No default value) log-tc tc.log log-tc-size 24576 log-update (No default value) log-warnings 1 

In esecuzione:

 mysql> show variables like '%log%'; 

Ritorni:

 +---------------------------------+---------------------------+ | Variable_name | Value | +---------------------------------+---------------------------+ | back_log | 50 | | binlog_cache_size | 32768 | | expire_logs_days | 0 | | innodb_flush_log_at_trx_commit | 1 | | innodb_locks_unsafe_for_binlog | OFF | | innodb_log_arch_dir | | | innodb_log_archive | OFF | | innodb_log_buffer_size | 1048576 | | innodb_log_file_size | 5242880 | | innodb_log_files_in_group | 2 | | innodb_log_group_home_dir | ./ | | innodb_mirrored_log_groups | 1 | | log | ON | | log_bin | OFF | | log_bin_trust_function_creators | OFF | | log_error | /var/log/mysqld.error.log | | log_queries_not_using_indexes | OFF | | log_slave_updates | OFF | | log_slow_queries | OFF | | log_warnings | 1 | | max_binlog_cache_size | 4294967295 | | max_binlog_size | 1073741824 | | max_relay_log_size | 0 | | relay_log_purge | ON | | relay_log_space_limit | 0 | | sync_binlog | 0 | +---------------------------------+---------------------------+ 26 rows in set (0.00 sec) 

Qualsiasi aiuto su come faccio a registrare MySQL?

5 Solutions collect form web for “Come abilitare la logging di MySQL?”

Anche se hai usato chmod 644 , assicuratevi che mysql sia il proprietario dei log.

 touch /var/log/mysql.log chown mysql:mysql /var/log/mysql.log touch /var/log/mysql.error.log chown mysql:mysql /var/log/mysql.error.log 

Quindi, riavviare mysqld.

Quindi, accedi a mysql e esegui:

 mysql> show variables like '%log%'; 

Guarda i valori di general_log , general_log_file , log , log_error , ecc.

Accenderli come necessario e eseguire flushlogs mysqladmin come necessario.

Per triggersre i file di registro, è necessario assicurarsi che una o più delle seguenti direttive siano nella sezione [mysqld] del file di configuration principale del server mysql ( /etc/my.cnf sul mio):

 [mysqld] log-bin log log-error log-slow-queries 

I registri verranno creati, per impostazione predefinita, nella stessa directory di dati che detengono le sottodirectory del database stesse (in genere /var/lib/mysql ) e il nome del file di log è predefinito al nome host seguito da un suffisso che corrisponde ai nomi di direttiva sopra citati (ad es. .bin, -slow-queries, ecc.).

Per mantenere i tuoi registri in un path diverso o utilizzando diversi nomi di file, specificare il nome di base seguendo la direttiva log= e qualsiasi path e nome di file che ti piacciono ad esempio:

 [mysqld] log-bin=/var/log/mysql-bin.log log=/var/log/mysql.log log-error=/var/log/mysql-error.log log-slow-queries=/var/log/mysql-slowquery.log 

Devi riavviare mysqld per avere effetto queste modifiche.

Le risposte precedenti erano datate. È ansible visualizzare il file di configuration in /etc/my.cnf o su windows ./mysql/my.ini .

Nella sezione [mysqld] aggiungere

 log_bin general_log log_error 

La documentazione per Windows indica che i registri vengono memorizzati in ProgramData/MySQL/MySQL Server 5.6/ . Ignoralo perché è una menzogna.

Inoltre, l'opzione consigliata del log viene deprezzata e provoca l'errore

 ambiguous option '--log' (log-bin, log_slave_updates) 

stato registrato ./mysql/data/host.err e il demone che muore in silenzio. L'impostazione corretta è general-log .

Anche le log-slow-queries non sono valide e hanno causato l'errore

 C:\mysql\bin\mysqld.exe: unknown option '--log-slow-queries' 

Quindi assicuratevi di stare lontani da quello anche.

Inserisci la row di command mysql con i privilegi super e esegue:

 SET GLOBAL general_log_file = '/var/log/mysql/mysql.log'; 

Nel mio caso, non importva se avessi questa variabile già impostata con lo stesso valore! Inoltre, ho cambiato le autorizzazioni e il proprietario del file come indicato negli altri post.

Provare impostazioni di registro diverse in my.cnf. Nel mio caso avevo bisogno:

 general_log = on general_log_file=/var/log/mysql/mysql.log 
Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.