219 votes

Comment consulter les fichiers journaux dans MySQL ?

J'ai lu que le serveur Mysql crée un fichier journal dans lequel il enregistre toutes les activités - comme le moment et le type d'exécution des requêtes.

Quelqu'un peut-il me dire où il se trouve dans mon système ? Comment puis-je le lire ?

En fait, j'ai besoin de sauvegarder la base de données avec des entrées différentes [sauvegarde entre deux dates], donc je pense que j'ai besoin d'utiliser le fichier journal ici, c'est pourquoi je veux le faire...

Je pense que ce journal doit être sécurisé d'une manière ou d'une autre, car des informations sensibles telles que les noms d'utilisateur et les mots de passe peuvent être enregistrés [si une requête l'exige] ; il est donc possible de le sécuriser et de le rendre difficilement visible.

J'ai un accès Root au système, comment puis-je voir le journal ?

Lorsque j'essaie d'ouvrir le fichier /var/log/mysql.log, il est vide.

Voici mon fichier de configuration :

[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket      = /var/run/mysqld/mysqld.sock
nice        = 0

[mysqld]
log = /var/log/mysql/mysql.log 
binlog-do-db=zero

user        = mysql
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
skip-external-locking

bind-address        = 127.0.0.1
#
# * Fine Tuning
#
key_buffer      = 16M
max_allowed_packet  = 16M
thread_stack        = 192K
thread_cache_size       = 8

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

211voto

loyola Points 3325

Voici un moyen simple de les activer. Dans mysql, nous avons besoin de voir souvent 3 logs qui sont principalement nécessaires pendant le développement d'un projet.

  • The Error Log . Il contient des informations sur les erreurs qui se produisent pendant que le serveur est en cours d'exécution (également le démarrage et l'arrêt du serveur)

  • The General Query Log . Il s'agit d'un enregistrement général de ce que mysqld fait fait (connexion, déconnexion, requêtes)

  • The Slow Query Log . Ιt composé d'instructions SQL "lentes" (comme l'indique son nom). comme l'indique son nom).

Par défaut, aucun fichier journal n'est activé dans MYSQL. Toutes les erreurs seront affichées dans le syslog ( /var/log/syslog ).

Pour les activer, il suffit de suivre les étapes ci-dessous :

étape1 : Accédez à ce fichier ( /etc/mysql/conf.d/mysqld_safe_syslog.cnf ) et supprimer ou commenter ces lignes.

étape2 : Allez dans le fichier mysql conf ( /etc/mysql/my.cnf ) et ajouter les lignes suivantes

Pour activer le journal des erreurs, ajoutez ce qui suit

[mysqld_safe]
log_error=/var/log/mysql/mysql_error.log

[mysqld]
log_error=/var/log/mysql/mysql_error.log

Pour activer le journal des requêtes générales, ajoutez ce qui suit

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

Pour activer le journal des requêtes lentes, ajoutez ce qui suit

log_slow_queries       = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes

étape3 : enregistrer le fichier et redémarrer mysql en utilisant les commandes suivantes

service mysql restart

Pour activer les journaux au moment de l'exécution, connectez-vous au client mysql ( mysql -u root -p ) et de donner :

SET GLOBAL general_log = 'ON';
SET GLOBAL slow_query_log = 'ON';

Enfin, je voudrais mentionner une chose J'ai lu ceci sur un blog . Merci. Cela fonctionne pour moi.

Cliquez sur aquí pour visiter le blog

59voto

kenorb Points 2464

Les journaux MySQL sont déterminés par les variables globales telles que :

  • log_error pour le journal des messages d'erreur ;
  • general_log_file pour le fichier journal des requêtes générales (si activé par general_log ) ;
  • slow_query_log_file pour le fichier journal des requêtes lentes (si l'option est activée par slow_query_log ) ;

Pour voir les paramètres et leur emplacement, exécutez la commande suivante :

mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log -e slow_query_log

Pour imprimer la valeur du journal des erreurs, exécutez la commande suivante dans le terminal :

mysql -e "SELECT @@GLOBAL.log_error"

Pour lire le contenu du fichier journal des erreurs en temps réel, exécutez :

sudo tail -f $(mysql -Nse "SELECT @@GLOBAL.log_error")

Note : Hit Control - C à la fin

Lorsque le journal général est activé, essayez :

sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)")

Pour utiliser mysql avec le mot de passe d'accès, ajouter -p o -pMYPASS paramètre. Pour le garder en mémoire, vous pouvez le configurer dans votre ~/.my.cnf , par exemple

[client]
user=root
password=root

Ainsi, on s'en souviendra pour la prochaine fois.

45voto

danip Points 4952

Vous devez activer la journalisation des requêtes dans mysql.

  1. éditer /etc/my.cnf

    \[mysqld\]
    log=/tmp/mysql.log
  2. redémarrer l'ordinateur ou le service mysqld

    service mysqld restart
  3. Ouvrez phpmyadmin/n'importe quelle application qui utilise mysql/console mysql et lancez une requête.

  4. cat /tmp/mysql.log ( vous devriez voir la requête )

11voto

Mark Nenadov Points 579

Extrait du manuel de référence MySQL :

Par défaut, tous les fichiers journaux sont créés dans le répertoire des données.

Vérifier /var/lib/mysql dossier.

9voto

Line Points 324

Dans mon (j'ai installé LAMP) /etc/ mysql Dans le fichier /my.cnf, j'ai trouvé les lignes suivantes, commentées, dans la section [mysqld] :

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

J'ai dû ouvrir ce fichier en tant que superutilisateur, avec le terminal :

sudo geany /etc/mysql/my.cnf

(Je préfère utiliser Geany au lieu de gedit ou VI, cela n'a pas d'importance)

Je les ai décommentés et j'ai sauvegardé le fichier, puis j'ai redémarré MySQL avec

sudo service MySQL restart

Lancer plusieurs requêtes, ouvrir le fichier ci-dessus (/var/log/mysql/mysql.log) et le log était là :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X