Tracer les connexions à MySQL
MySQL n’inclut pas de système de traçabilité simple à mettre en œuvre, comme peuvent le proposer SQL Server de Microsoft ou Oracle Database.
Créer une table CSV
MySQL comprend de nombreux trésors insoupçonnés. Il permet de créer des tables – des fichiers – … au format CSV.
Créez tout d’abord une base de données dédiée pour tracer les connexions de vos utilisateurs :
CREATE DATABASE logs;
Puis, créez la table qui consignera les connexions des utilisateurs :
CREATE TABLE logs.connexion (
log_user varchar(100) NOT NULL,
log_date datetime NOT NULL)
ENGINE = CSV;
Vous pouvez interroger les fichier CSV à l’aide d’une instruction SELECT : SELECT * FROM logs.connexion. Vous pouvez aussi accéder au contenu de ce fichier à l’aide de la commande tail -f /var/lib/mysql/log/connexion.CSV !
Donner les droits à tous les utilisateurs de la base
Au cas où vous oublieriez de donner les droits, vous ne pourrez plus accéder aux données des bases de données MySQL à partir de vos applications !
- Pour un serveur Web :
GRANT INSERT ON logs.connexion TO ‘%’@’localhost’;
- Pour une base MySQL dans un intranet :
GRANT INSERT ON logs.connexion TO ‘%’@’%’;
Tracer les utilisateurs sous MySQL
Après avoir donné les droits aux utilisateurs de l’instance MySQL, vous pouvez dynamiquement jounraliser les connexions de vos utilisateurs à partir de l’interpéteur de commandes de MySQL ou tout autre système équivalent (MySQL WorkBench, Toad for MySQL)
SET GLOBAL init_connect = ‘INSERT INTO logs.connexion VALUES(USER(),NOW());’;
Vous pouvez aussi ajouter à la section [mysqld] du fichier /etc/my.cnf, sous CentOS :
init_connect = ‘INSERT INTO logs.connexion VALUES(USER(),NOW());’;
Dans ce cas, vous devrez redémarrer le service mysql : /etc/init.d/mysqld restart ou service mysqld restart, sous CentOS.