web-dev-qa-db-fra.com

Comment voir les fichiers de log dans MySQL?

J'ai lu que le serveur Mysql crée un fichier journal dans lequel il conserve un enregistrement de toutes les activités - comme quand et quelles requêtes sont exécutées.

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

Fondamentalement, je dois sauvegarder la base de données avec différentes entrées [sauvegarde entre deux dates], donc je pense que je dois 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ées [si une requête l'exige]; alors peut-il être sécurisé, difficile à voir?

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

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

Ceci est 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
159
Arjun

Voici un moyen simple de les activer. Dans mysql, nous avons souvent besoin de voir 3 journaux qui sont le plus souvent nécessaires au cours du développement d’un projet.

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

  • The General Query Log. Ceci est un compte rendu général de ce que fait mysqld (connecter, déconnecter, requêtes)

  • The Slow Query Log. Il se compose d'instructions SQL "lentes" (comme indiqué par 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, suivez les étapes ci-dessous.

step1: Accédez à ce fichier (/etc/mysql/conf.d/mysqld_safe_syslog.cnf ) et supprimez ou commentez ces lignes.

step2: Allez dans le fichier de configuration mysql (/etc/mysql/my.cnf) et ajoutez 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 de requête général, ajoutez ce qui suit

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

Pour activer le journal de requête lent, ajoutez ce qui suit

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

step3: sauvegardez le fichier et redémarrez 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 donnez:

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

Enfin, une chose que je voudrais mentionner ici est Je lis ceci à partir d’un blog . Merci. Ça marche pour moi.

Cliquez ici pour visiter le blog

142
loyola

Vous devez activer la requête de journalisation dans mysql.

1.edit /etc/my.cnf

 [mysqld] 
 log =/tmp/mysql.log 

2. redémarrez l'ordinateur ou le service mysqld

 service mysqld restart 

3.open phpmyadmin/toute application utilisant la console mysql/mysql et lancer une requête

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

42
danidacar

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 de la requête générale (si activé par _general_log_);
  • slow_query_log_file pour le fichier journal de requête lente (si activé par _slow_query_log_);

Pour voir les paramètres et leur emplacement, exécutez cette commande Shell:

_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 cette commande 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 quand finir

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

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

Pour utiliser mysql avec l'accès par mot de passe, ajoutez le paramètre _-p_ ou _-pMYPASS_. Pour le garder en mémoire, vous pouvez le configurer dans votre _~/.my.cnf_, par exemple.

_[client]
user=root
password=root
_

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

33
kenorb

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

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

Je devais ouvrir ce fichier en tant que super utilisateur, avec terminal:

Sudo geany /etc/mysql/my.cnf

(Je préfère utiliser Geany que gedit ou VI, peu importe)

Je viens de les commenter et de sauvegarder le fichier puis de restatt mysql avec

Sudo service mysql restart

Exécutez plusieurs requêtes, ouvrez le fichier ci-dessus (/var/log/mysql/mysql.log) et le journal était là :)

9
Line

À partir du manuel de référence MySQL:

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

Vérifiez le dossier /var/lib/mysql.

8
Mark Nenadov

Pour compléter la réponse de loyola , il convient de mentionner que depuis MySQL 5.1, log_slow_queries est obsolète et est remplacé par slow-query-log.

Si vous utilisez log_slow_queries, votre service mysql restart ou service mysql start échoue.

3
Oussama Romdhane
Shell> mysqladmin flush-logs


Shell> mv Host_name.err-old backup-directory
1
Test

En plus des réponses ci-dessus, vous pouvez transmettre des paramètres de ligne de commande au processus mysqld pour les options de journalisation au lieu de modifier manuellement votre fichier de configuration. Par exemple, pour activer la journalisation générale et spécifier un fichier:

mysqld --general-log --general-log-file=/var/log/mysql.general.log

Confirmant les autres réponses ci-dessus, mysqld --help --verbose vous donne les valeurs du fichier conf (si vous exécutez avec les options de ligne de commande general-log est FALSE); alors que mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log donne:

general_log     ON
general_log_file        /var/log/mysql.general.log

Utilisez une syntaxe légèrement plus compacte pour le journal des erreurs:

mysqld --general-log --general-log-file=/var/log/mysql.general.log --log-error=/var/log/mysql.error.log
1
br3w5