Comment voir les fichiers journaux dans MySQL?

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

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

Fondamentalement, j'ai besoin de sauvegarder la base de données avec une entrée différente [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é en quelque sorte parce que des informations sensibles telles que les noms d'utilisateur et le mot de passe peut être enregistré [si une requête l'exige]; alors peut-il être sécurisé, pas facilement visible?

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

Quand j'essaie d'ouvrir / var / log / mysql.journal il est vide.

C'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
138
demandé sur kenorb 2011-03-26 14:21:48

8 réponses

Voici un moyen simple de les activer. Dans mysql, nous devons voir souvent 3 journaux qui sont principalement nécessaires lors de tout développement de projet.

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

  • The General Query Log. Ceci est un enregistrement Général de ce qu'est mysqld faire (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

Etape 1: Aller à ce fichier(/etc/mysql/conf.d / mysqld_safe_syslog.cnf ) et supprimer ou commenter ces lignes.

Etape 2: allez dans le fichier conf mysql (/etc / mysql / my.cnf) et ajouter les lignes suivantes

Pour activer le journal des erreurs ajouter la suite

[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 ajouter suivant

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

Pour activer le journal de requête lent, ajoutez

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

Etape 3: enregistrez le fichier et redémarrez mysql en utilisant les commandes suivantes

service mysql restart

Pour activer les journaux à 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 est j'ai lu cela sur un blog. Grâce. Il fonctionne pour moi.

Sur ici pour visiter le blog

113
répondu loyola 2015-08-28 19:25:12

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

1.modifier /etc / my.cnf

[mysqld]
log=/tmp/mysql.log

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

service mysqld restart

3.ouvrez phpmyadmin/toute application qui utilise mysql/mysql console et exécutez une requête

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

42
répondu danidacar 2011-03-28 13:42:17

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 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"

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

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

Remarque: appuyez sur Contrôle-C lors de la finition

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 souvenir, vous pouvez le configurer dans votre ~/.my.cnf, par exemple

[client]
user=root
password=root

On s'en souviendra pour la prochaine fois.

25
répondu kenorb 2017-06-07 19:52:42

Dans mon (j'ai LAMPE installé) /etc/mysql/ma.fichier 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 super utilisateur, avec terminal:

sudo geany /etc/mysql/my.cnf

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

Je viens de les décommenter et enregistrer le fichier puis restatt mysql avec

sudo service mysql restart

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

9
répondu Line 2016-06-28 18:05:19

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
répondu Mark Nenadov 2016-06-07 17:00:27

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

L'utilisation de {[0] } entraînera l'échec de service mysql restart ou service mysql start

3
répondu Oussama Romdhane 2017-05-23 10:31:37
shell> mysqladmin flush-logs


shell> mv host_name.err-old backup-directory
1
répondu Test 2015-04-15 16:40:08

En plus des réponses ci-dessus, vous pouvez passer des paramètres de ligne de commande au processus mysqld pour les options de journalisation au lieu d'éditer manuellement votre fichier conf. 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 (donc exécuter 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
répondu br3w5 2016-08-22 11:02:07