Existe-t-il un moyen de vérifier les connexions à MySQL? Je voudrais pouvoir créer un nom d'utilisateur pour chaque employé et ainsi créer une piste d'audit des connexions. Cependant, la recherche sur Google n'a donné aucun bon résultat.
Plus nous pouvons auditer, mieux c'est. À tout le moins, ce serait bien de savoir qui s'est connecté quand. Il serait encore mieux de voir qui a exécuté quelle requête et quand. Les journaux sont là principalement pour indiquer aux clients que nous les avons car il existe des informations potentiellement sensibles dans la base de données.
Évidemment, la possibilité d'auditer les requêtes exécutées par chaque utilisateur (et quand) nous donnerait également la possibilité de mieux identifier qui est la cause d'un problème de sécurité, le cas échéant.
la source
Réponses:
Vous voudrez probablement utiliser le journal général des requêtes .
Une chose importante avec la journalisation pour des raisons de sécurité est qu'un attaquant ne peut pas accéder au journal pour effacer les traces de sa présence, alors envisagez d' ajouter des fichiers uniquement .
FWIW dans Oracle, nous pouvons envoyer automatiquement des journaux à un syslog distant , mais je ne pense pas que MySQL dispose encore de cette fonctionnalité. Peut-être pourriez-vous le simuler avec SNMP mais je ne l'ai pas essayé.
la source
La réponse de @Gauis est excellente. Pour en ajouter davantage, vous pouvez:
MySQL 5.1 permet désormais de stocker le journal général et le journal des requêtes lentes sous forme de tables SQL.
Ajoutez ceci à /etc/my.cnf:
Redémarrez mysql
Ensuite, lorsque mysqld crée le journal général, au lieu d'un fichier texte, il crée la table en tant que table CSV dans le dossier / var / lib / mysql / mysql (base de données de schéma mysql).
Faites juste ceci pour le voir:
Toutes les connexions s'y accumuleront.
Pour vous, cela n'est pas très utile pour l'interroger. Ce serait juste une analyse complète de la table à chaque fois.
Que faire ??? CONVERTIR À MyISAM et INDEXER LA TABLE !!!!
Vous pouvez éventuellement mettre un index de texte intégral sur le champ d'argument.
Je viens de configurer MySQL 5.5.9 sur un serveur et je l'ai essayé. Voici le résultat:
Maintenant, vous pouvez interroger par horodatage et rechercher des jetons spécifiques dans le champ d'argument.
Par exemple, notez la ligne 4 du SELECT que j'ai fait. Ma connexion a été enregistrée dans le champ d'argument en tant que
[email protected] on
. Vous pouvez les suivre.Et si le général devient trop grand (croyez-moi, il deviendra trop grand très rapidement)
Que faire ???
BTW Une fois que vous avez mis le journal général hors ligne, vous pouvez les exécuter pour collecter les connexions distinctes qui ont fait quelque chose dans mysqld:
J'ai un client avec 3 serveurs DB. Eeach avec DB Server contient plus de 1 000 000 000 (1 milliard [milliers de millions]) de lignes. Le script ci-dessus a pris environ 2,5 heures. La table audit_user_host s'est terminée avec 27 connexions distinctes.
Vous devriez être prêt à partir.
Amusez-vous avec celui-ci, tout le monde !!!
la source
Au lieu de faire tant de choses manuellement, installez simplement le plug-in Audit qui donne plus d'informations au niveau de l'utilisateur
http://www.mysql.com/products/enterprise/audit.html
Il est disponible sur certaines éditions commerciales MySQL, mais cela aurait été génial si une fourchette MySQL ajoute également dans l'édition communautaire afin que la plupart des gens bénéficient de cette fonctionnalité, sinon nous devons compter sur la solution fournie par @RolandoMySQLDBA.
la source
@statichippo
Comment installer la journalisation d'audit sur MySQL.
+ La journalisation d'audit ne prend en charge que MySQL Enterprise
+ Vous pouvez installer la journalisation d'audit sur la communauté MySQL:
1. Copiez le fichier audit_log.so par Vous pouvez installer MySQL Enterprise Trial, puis copiez le fichier audit_log.so dans la communauté MySQL.
2. Copiez audit_log.so dans plugin_dir sous / usr / lib64 / mysql / plugin ou vous pouvez afficher le plugin dir en:
Accédez à la console mysql: mysql> affichez les variables globales comme '% plugin%';
3. Installez la journalisation d'audit comme:
mysql> INSTALLER LE PLUGIN audit_log SONAME 'audit_log.so';
mysql> AFFICHER LES VARIABLES COMME 'audit_log%';
4.
Journalisation d' audit de sortie: tail -f /var/lib/mysql/audit.log
Merci beaucoup.
la source