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?
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.
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.
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.
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
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.