Activer et examiner le journal général des requêtes
Le journal de requêtes général (general query log) enregistre chaque instruction SQL reçue des clients. C'est un outil inestimable pour le débogage et l'audit, mais il doit être utilisé temporairement car il peut impacter les performances et consommer un espace disque considérable. Dans cette étape, vous allez activer le journal, générer une activité et examiner le fichier journal.
Ouvrez d'abord le terminal depuis votre bureau.
Connectez-vous au serveur MySQL en tant qu'utilisateur root. Dans cet environnement de laboratoire, vous pouvez utiliser sudo pour vous connecter sans mot de passe.
sudo mysql -u root
Une fois que vous voyez l'invite mysql>, activez le journal de requêtes général globalement.
SET GLOBAL general_log = 'ON';
Par défaut, le fichier journal est stocké dans le répertoire de données de MySQL. Pour un accès plus facile, changeons son emplacement vers le répertoire /tmp.
SET GLOBAL general_log_file = '/tmp/mysql_general.log';
Vous pouvez vérifier le nouvel emplacement en exécutant :
SHOW VARIABLES LIKE 'general_log_file';
La sortie devrait confirmer le chemin que vous venez de définir.
+------------------+-------------------------+
| Variable_name | Value |
+------------------+-------------------------+
| general_log_file | /tmp/mysql_general.log |
+------------------+-------------------------+
1 row in set (0.01 sec)
Maintenant, exécutez quelques commandes pour générer des entrées dans le journal.
CREATE DATABASE IF NOT EXISTS testdb;
USE testdb;
SELECT 'Logging this query' AS message;
Après avoir exécuté ces commandes, quittez le shell MySQL.
exit
De retour dans votre terminal, affichez le contenu du fichier journal.
sudo cat /tmp/mysql_general.log
Vous verrez les commandes que vous avez exécutées, ainsi que les informations de connexion et les horodatages. Cela confirme que le journal de requêtes général fonctionne correctement.
/usr/sbin/mariadbd, Version: 10.6.18-MariaDB-0ubuntu0.22.04.1 (Ubuntu 22.04). started with:
Tcp port: 3306 Unix socket: /run/mysqld/mysqld.sock
Time Id Command Argument
250728 14:12:46 33 Query SHOW VARIABLES LIKE 'general_log_file'
250728 14:12:50 33 Query CREATE DATABASE IF NOT EXISTS testdb
33 Query SELECT DATABASE()
33 Init DB testdb
33 Query show databases
33 Query show tables
33 Query SELECT 'Logging this query' AS message
250728 14:12:56 33 Quit
Enfin, il est de bonne pratique de désactiver le journal une fois que vous avez terminé. Vous pouvez le faire directement depuis le terminal.
sudo mysql -u root -e "SET GLOBAL general_log = 'OFF';"
Cela garantit que le journal ne continue pas de croître et n'affecte pas les performances du serveur.