MySQL日志审计 帮你揪出内个干坏事儿的小子
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,MySQL日志审计 帮你揪出内个干坏事的小子简介Part1:写在最前MySQL本身并不像MariaDB和Percona一样提供审计功能,但如果我们想对数据库进行审计,去看是谁把我的数据库数据给删了,该
千家信息网最后更新 2026年11月01日MySQL日志审计 帮你揪出内个干坏事儿的小子
MySQL日志审计 帮你揪出内个干坏事的小子
简介
Part1:写在最前
MySQL本身并不像MariaDB和Percona一样提供审计功能,但如果我们想对数据库进行审计,去看是谁把我的数据库数据给删了,该怎么办呢?我们主要利用init-connect参数,让每个登录的用户都记录到我们的数据库中,并抓取其connection_id(),再根据binlog就能够找出谁干了那些破事儿。
MariaDB如何审计,可移步:
http://suifu.blog.51cto.com/9167728/1857594
准备
Part1:创建所需库
[root@HE3 telegraf]# mysql -uroot -pEnter password: Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 859Server version: 5.7.16-log MySQL Community Server (GPL)Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> create database auditdb;Query OK, 1 row affected (0.00 sec)
Part2:创建所需表
[root@HE3 ~]# mysql -uroot -pEnter password: Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 266Server version: 5.7.16-log MySQL Community Server (GPL)Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> use auditdb;Database changedmysql> CREATE TABLE accesslog ( -> ID INT (10) UNSIGNED NOT NULL PRIMARY KEY auto_increment, -> ConnectionID INT (10) UNSIGNED, -> ConnUser VARCHAR (30) NOT NULL DEFAULT '', -> MatchUser VARCHAR (30) NOT NULL DEFAULT '', -> LoginTime datetime -> );Query OK, 0 rows affected (0.02 sec)
Part3:在my.cnf中添加
init-connect='Insert into auditdb.accesslog(ConnectionID ,ConnUser ,MatchUser ,LoginTime)values(connection_id(),user(),current_user(),now());'
并重启数据库
[root@HE3 ~]# /etc/init.d/mysqld restartShutting down MySQL.... SUCCESS! Starting MySQL. SUCCESS!
测试
Part1:环境
[root@HE3 ~]# mysql -uroot -pEnter password: Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 266Server version: 5.7.16-log MySQL Community Server (GPL)Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> use auditdb;mysql> use helei;Database changedmysql> select * from t1;+----+| id |+----+| 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 |+----+8 rows in set (0.00 sec)
Part2:用不同用户登录操作
[root@HE3 telegraf]# mysql -uhelei -pMANAGERmysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 185Server version: 5.7.16-log MySQL Community Server (GPL)Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> use helei;Database changedmysql> select * from t1;+----+| id |+----+| 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 |+----+8 rows in set (0.00 sec)mysql> delete from t1 where id = 2;Query OK, 1 row affected (0.00 sec)mysql> delete from t1 where id = 4;Query OK, 1 row affected (0.00 sec)[root@HE3 telegraf]# mysql -uyuhao -pMANAGERmysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 185Server version: 5.7.16-log MySQL Community Server (GPL)Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> use helei;Database changedmysql> select * from t1;+----+| id |+----+| 3 || 5 || 6 || 7 || 8 || 9 |+----+8 rows in set (0.00 sec)mysql> delete from t1 where id = 3;Query OK, 1 row affected (0.00 sec)
Part3:查看用户ID
mysql> select * from accesslog;+----+--------------+-----------------+-----------+---------------------+| ID | ConnectionID | ConnUser | MatchUser | LoginTime |+----+--------------+-----------------+-----------+---------------------+| 1 | 10 | helei@localhost | helei@% | 2016-12-08 19:07:49 || 2 | 19 | helei@localhost | helei@% | 2016-12-08 19:08:44 || 3 | 125 | helei@localhost | helei@% | 2016-12-08 19:24:46 || 4 | 128 | yuhao@localhost | yuhao@% | 2016-12-08 19:25:01 || 5 | 182 | helei@localhost | helei@% | 2016-12-08 19:33:02 || 6 | 185 | yuhao@localhost | yuhao@% | 2016-12-08 19:33:20 |+----+--------------+-----------------+-----------+---------------------+6 rows in set (0.00 sec)
Part4:binlog日志对比
这里可以看到t1表的id=2和id=4列是由thread_id=182用户删掉的,也就是helei用户
#161208 19:33:39 server id 1250 end_log_pos 5275 CRC32 0x2ae798a9 Query thread_id=182 exec_time=0 error_code=0SET TIMESTAMP=1481254419/*!*/;BEGIN/*!*/;# at 5275#161208 19:33:39 server id 1250 end_log_pos 5324 CRC32 0x2cf42817 Rows_query# delete from t1 where id=2#161208 19:34:07 server id 1250 end_log_pos 5885 CRC32 0x947106d4 Query thread_id=182 exec_time=0 error_code=0SET TIMESTAMP=1481254447/*!*/;BEGIN/*!*/;# at 5885#161208 19:34:07 server id 1250 end_log_pos 5934 CRC32 0xfe1eb7fc Rows_query# delete from t1 where id=4
这里可以看到t1表的id=3列是由thread_id=185用户删掉的,也就是yuhao用户
#161208 19:33:49 server id 1250 end_log_pos 5579 CRC32 0x5f8d9879 Query thread_id=185 exec_time=0 error_code=0SET TIMESTAMP=1481254429/*!*/;BEGIN/*!*/;# at 5579#161208 19:33:49 server id 1250 end_log_pos 5630 CRC32 0x71feeadc Rows_query# delete from t1 where id = 3
参考资料:
http://dbspace.blog.51cto.com/6873717/1881053
--总结--
审计多多少少会影响数据库的性能,能不开尽量不开。另外开启审计数据库用户要实名制或者一对一,以免干了坏事儿的人赖账~由于笔者的水平有限,编写时间也很仓促,文中难免会出现一些错误或者不准确的地方,不妥之处恳请读者批评指正。
用户
数据
审计
数据库
坏事
日志
也就是
是由
登录
小子
不同
不妥
一对一
事儿
功能
参数
参考资料
地方
实名
实名制
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技互联网
深圳市人人互联网科技有限公司
广州大一互联网络科技有限公司
中国互联网科技股
科技互联网政务服务
互联网科技的发展
互联网未来科技
极限挑战互联网科技
华中科技大学互联网
上海万想互联网科技
恒生科技互联网指数分析
广西拼得多互联网科技有限公司
互联网科技公司招聘
深圳国际航运科技和互联网
智腾互联网科技有限公司
坤平互联网科技
广西互联网科技孵化中心
翼展科技 首家互联网医院
黑科技 体验场景 互联网大会
六子台科技互联网展会
腾讯阿里互联网科技
关于新基建和互联网科技
互联网科技ppt模板
佰商互联网科技有限公司
中国互联网金融科技基金
互联网科技实习生岗位职责
北京市互联网新科技
广州百诚互联网科技有限公司官网
陕西云淼互联网科技公司
互联网科技手抄报图片