web-dev-qa-db-fra.com

Comment activer la journalisation MySQL?

J'exécute MySQL 5.0.45 sur OS X 10.6.1 et je n'arrive pas à obtenir de MySQL qu'il enregistre quoi que ce soit. Je débogue une application et j'ai besoin de voir toutes les requêtes et les erreurs.

J'ai ajouté au fichier etc/my.cnf:

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

J'ai utilisé Sudo pour créer deux fichiers journaux, définir des autorisations sur 644, puis redémarré MySQL.

J'ai fait référence à Où est mon journal mysql sur OS X? afin de dépanner.

Fonctionnement:

ps auxww|grep [m]ysqld

Retour:

_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

Et en cours d'exécution:

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

Retour:

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

Fonctionnement:

mysql> show variables like '%log%';

Retour:

+---------------------------------+---------------------------+
| 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)

Une aide sur la façon dont je peux obtenir MySQL pour se connecter?

36
RyOnLife

Même si vous avez utilisé chmod 644, assurez-vous que mysql est le propriétaire des journaux.

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

Ensuite, redémarrez mysqld.

Ensuite, connectez-vous à mysql et exécutez:

mysql> show variables like '%log%';

Regardez les valeurs de general_log, general_log_file, log, log_error, etc.

Allumez-les selon vos besoins et exécutez mysqladmin flushlogs si nécessaire.

23
randomx

Pour activer les fichiers journaux, vous devez vous assurer qu'une ou plusieurs des directives suivantes se trouvent dans le [mysqld] section du fichier de configuration principal de votre serveur mysql (/etc/my.cnf sur le mien):

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

Les journaux seront créés, par défaut, dans le même répertoire de données qui contient les sous-répertoires de la base de données eux-mêmes (généralement /var/lib/mysql) et les noms des fichiers journaux par défaut sont le nom d'hôte suivi d'un suffixe qui correspond aux noms des directives ci-dessus (par exemple. -bin, -slow-queries, etc.).

Pour conserver vos journaux dans un chemin différent ou en utilisant des noms de fichiers différents, spécifiez le nom de base en suivant le log= directive, et tout chemin et nom de fichier que vous aimez, par exemple:

[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

Vous devez redémarrer mysqld pour que ces modifications prennent effet.

13
gigawatt

Les réponses précédentes étaient périmées. Vous pouvez consulter le fichier de configuration dans /etc/my.cnf ou sur windows ./mysql/my.ini.

Dans le [mysqld] section ajouter

log_bin
general_log
log_error

La documentation de Windows indique que les journaux sont stockés dans ProgramData/MySQL/MySQL Server 5.6/. Ignorez-le parce que c'est un mensonge.

De plus, l'option log recommandée est dépréciée et entraîne l'erreur

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

étant connecté ./mysql/data/Host.err et le démon mourant en silence. Le paramètre correct est general-log.

Aussi log-slow-queries n'est pas valide et a provoqué l'erreur

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

Assurez-vous donc de rester à l'écart de cela aussi.

6
user3338098

Essayez différents paramètres de journal dans my.cnf. Dans mon cas, j'avais besoin de:

general_log = on

general_log_file=/var/log/mysql/mysql.log
2
Ray

Entrez la ligne de commande mysql avec des privilèges super et effectuez:

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

Dans mon cas, peu importait que cette variable soit déjà définie avec la même valeur! De plus, j'ai changé les autorisations et le propriétaire du fichier comme mentionné dans les autres articles.

2
Lucia