De temps en temps, des tentatives de connexion échouent sur notre serveur de production MySQL (le tableau de bord MySQL nous alerte). Existe-t-il un moyen de consigner chaque réussite et échec de connexion au serveur MySQL sans l'activer general_log
?
Nous pensons que ce general_log
n'est pas une option car c'est un serveur de production avec une charge élevée.
As of MySQL 5.5.28, MySQL Enterprise Edition includes MySQL Enterprise Audit, implemented using a server plugin named audit_log.
seule la version entreprenante en est dotée.Réponses:
juste pour informer le curieux: creusez dans votre journal des erreurs et hop!
(1). modifier my.cnf (documentation des paramètres trouvée ici )
(2). lors de l'exécution de la commande
(3). et vous l'avez!
(4). si vous devez restreindre l'utilisateur (attaque DOS ou tentative de récupération de mot de passe utilisateur mysql dans une base de données multi-utilisateurs), alors ( http://dev.mysql.com/doc/refman/5.5/en/user-resources.html )
pour limiter à seulement 100 tentatives de récupération de mot de passe par heure.
la source
Je pense que le journal général peut consigner toutes les tentatives de connexion (succès et échec) entre beaucoup d'autres choses. Le principal problème est que le journal général affectera les performances de votre base de données. Vous pouvez activer le journal général avec la requête
pour les nouvelles versions de MySQL.
la source
/etc/mysql/my.cnf
mysql?--general-log
des indicateurs lorsque vous démarrez MySQL.Salut, je ne pense pas que ce soit possible.
Depuis mysql 5.1.29 - vous pouvez spécifier l'option de stockage (table ou fichier) et l'emplacement et le journal que vous souhaitez - erreur, requête générale, binaire ou lente. Pour autant que je sache - vous ne pouvez pas spécifier le format du journal ou ce qui est enregistré. Je peux me tromper - mais je pense que toutes les tentatives de connexion seront enregistrées dans le journal général, et non l'erreur.
Cependant, en supposant que votre serveur mysql fonctionne sur une machine distincte, à partir de votre serveur d'application, et que vous avez besoin du port 3306 (ou autre) ouvert et que vous ne pouvez pas utiliser le tunnel ssh, votre serveur mysql ne devrait toujours pas être accessible par quiconque le voudra- nilly. Je recommande fortement de ne pas l'exposer au trafic Web, et si vous devez (comme dans le cas où résider quelque part pas derrière votre pare-feu) le lier à l'adresse IP ou au bloc IP de votre serveur d'applications et à votre IP d'accès administrateur (où vous êtes accès depuis)
J'espère que ça t'as aidé.
la source
On peut se connecter
connect
etquit
commander en utilisant mysql-audit-plugin.audit-plugin-percona-5.7-1.1.7-805-linux-x86_64.zip
.so
fichier téléchargé à l'endroit indiqué parmysqladmin variables | grep plugin_dir
.mysql>install plugin audit soname 'libaudit_plugin.so'
mysql>set global audit_json_file=ON
, par défaut, il enregistre toutes les opérations réussies. en le paramétrant,set global audit_record_cmds='quit,connect'
il se connecte uniquement et se ferme, je suppose, selon la configuration de mysql-audit-plugin .Voici à quoi cela ressemble dans le fichier pour la connexion et la déconnexion:
la source
si le serveur en question ne devrait pas avoir de connexions externes, comme configuré, je serais inquiet à propos d'une sorte d'attaque contre votre serveur d'applications, à moins que les connexions échouées proviennent de nouvelles applications en cours de déploiement avant que l'utilisateur / pass ait été configuré.
si le serveur est en quelque sorte exposé à des connexions externes sur 3306, à moins que cela ne soit intentionnel et nécessaire, je définirais la configuration comme l'a dit Nick, et j'essaierais également d'utiliser iptables pour restreindre le trafic à 3306 uniquement à partir de vos serveurs d'applications.
la source
Sur http://www.mysqlperformanceblog.com/2008/11/07/poor-mans-query-logging/ , l'auteur montre une méthode pour capturer les paquets à l'aide de tcpdump et filtrer la sortie en fonction de la chaîne.
Cela contourne vos préoccupations concernant le journal général et les performances, bien que tcpdump puisse lui-même encourir une pénalité de performance mineure. Cette solution enregistrera également moins de données que le journal général des requêtes.
Je ne l'ai pas utilisé moi-même, mais cela semble très utile.
la source