L'éditeur suivant vous proposera un article sur l'implémentation de MySQL en utilisant init-connect pour augmenter la fonction d'audit d'accès. L'éditeur pense que c'est plutôt bien, alors je vais le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur et jetons un œil
Les connexions Mysql doivent d'abord être initialisées via init-connect puis connectées à l'instance.
Nous en profitons et implémentons la fonction d'audit d'accès à la base de données en enregistrant le thread_id, le nom d'utilisateur et l'adresse de l'utilisateur lors de la connexion init.
Étapes de mise en œuvre
1. Créez une table de bibliothèque pour l'audit.
Afin de ne pas entrer en conflit avec la bibliothèque entreprise, créez votre propre bibliothèque séparément :
#建库表代码 create database db_monitor ; use db_monitor ; CREATE TABLE accesslog ( thread_id int(11) DEFAULT NULL, #进程id log_time datetime default null, #登录时间 localname varchar(50) DEFAULT NULL, #登录名称,带详细ip matchname varchar(50) DEFAULT NULL, #登录用户 key idx_log_time(log_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2. Configurez le paramètre init-connect
Ce paramètre peut être ajusté dynamiquement, et assurez-vous de l'ajouter au fichier de configuration my.cnf, sinon il deviendra invalide après le prochain redémarrage ;
mysql> show variables like 'init_connect%'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | init_connect | | +---------------+-------+ 1 row in set (0.00 sec mysql> set global init_connect='insert into db_monitor.accesslog(thread_id,log_time,localname,matchname) values(connection_id(),now(),user(),current_user());';
3. Accordez aux utilisateurs ordinaires l'autorisation d'insérer sur la table du journal d'accès
Ce point est très important
Ce paramètre ne prend effet que pour les utilisateurs ordinaires, pas pour ceux disposant de super autorisations.
Si vous êtes un utilisateur ordinaire, après avoir ajouté cette fonction, vous devez autoriser :
accorder l'insertion sur db_monitor.accesslog à user@'xx.xx.xx. % ';
La conséquence de ne pas autoriser est que la connexion à la base de données échouera :
Utilisateurs sans autorisations d'insertion dans la table du journal d'accès :
mysql> show databases; ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 7 Current database: *** NONE *** ERROR 1184 (08S01): Aborted connection 7 to db: 'unconnected' user: 'user2' host: 'localhost' (init_connect command failed)
4. Vérifiez la fonction d'audit
Un utilisateur a supprimé une table dans la bibliothèque de test. nous pouvons le suivre avec le journal binlog. Quel utilisateur sera là :
Vérifiez le journal binlog :
Vous pouvez voir de quel utilisateur il s'agit. Des actions ont été entreprises, complétant ainsi l'audit.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!