安全应急响应工作中,一项重要任务就是要对mysql数据库的日志进行分析。我们通过对mysql日志记录的审计,发现攻击行为,进而追溯攻击源。在工作中遇见的各种服务器上,由于mysql安装方式不同,其日志文件存放的位置也不固定。要进行日志分析,首先第一步要找到日志文件的位置,因此,本文总结一些常用的快速查找mysql日志文件存放目录方法,以便日后使用。
一、OS层
1、服务通用查找法。先通过netstat命令grep出mysql的pid,再通过ps aux找到mysql的当前配置,代码如下
可以看到,mysqld的/var/log目录为日志文件的存放目录。
2、find命令查找法。此法可以大概找到mysql的相关目录,然后需要再凭经验判断mysql日志文件的存放路径。
[root@redwand ~]# find / -name mysql
[root@redwand ~]# find / -name mysqld
[root@redwand ~]# locate mysql
3、
配置文件查找法。找到配置文件my.cnf(my.ini),读取文件中配置参数,找到日志路径。
[root@redwand ~]# find / -name my.cnf
/etc/my.cnf
[root@redwand ~]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
general_log = 1
log_output = TABLE
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
4、redhat系统rpm命令查找法。在redhat类似发行版本的Linux系统中,rpm命令有很好的查看安装包的功能。
[root@redwand ~]# rpm -qa | grep mysql # -a Query all installed packages
[root@redwand ~]# rpm -ql mysql-libs-5.1.73-8.el6_8.x86_64 # -l List files in package
[root@redwand ~]# rpm -qf `which mysql` # -f Query package owning FILE
mysql-5.1.73-8.el6_8.x86_64
二、DB层。
当我们已经知道了数据库的账号和密码,成功登陆mysql后,可以使用DB命令查看mysql特殊变量的值来找。
mysql> show global variables like ‘%log%’;
+—————————————–+———————————+
| Variable_name | Value |
+—————————————–+———————————+
| back_log | 50 |
| binlog_cache_size | 32768 |
| binlog_direct_non_transactional_updates | OFF |
| binlog_format | STATEMENT |
| expire_logs_days | 0 |
| general_log | ON |
| general_log_file | /var/run/mysqld/mysqld.log |
| innodb_flush_log_at_trx_commit | 1 |
| innodb_locks_unsafe_for_binlog | OFF |
| innodb_log_buffer_size | 1048576 |
| innodb_log_file_size | 5242880 |
| innodb_log_files_in_group | 2 |
| innodb_log_group_home_dir | ./ |
| innodb_mirrored_log_groups | 1 |
| log | ON |
| log_bin | OFF |
| log_bin_trust_function_creators | OFF |
| log_bin_trust_routine_creators | OFF |
| log_error | /var/log/mysqld.log |
| log_output | TABLE |
| log_queries_not_using_indexes | OFF |
| log_slave_updates | OFF |
| log_slow_queries | OFF |
| log_warnings | 1 |
| max_binlog_cache_size | 18446744073709547520 |
| max_binlog_size | 1073741824 |
| max_relay_log_size | 0 |
| relay_log | |
| relay_log_index | |
| relay_log_info_file | relay-log.info |
| relay_log_purge | ON |
| relay_log_space_limit | 0 |
| slow_query_log | OFF |
| slow_query_log_file | /var/run/mysqld/mysqld-slow.log |
| sql_log_bin | ON |
| sql_log_off | OFF |
| sql_log_update | ON |
| sync_binlog | 0 |
+—————————————–+———————————+
38 rows in set (0.00 sec)
同时,我们还可以查看特殊变量,找到数据库data目录。
mysql> select @@datadir;
+—————–+
| @@datadir |
+—————–+
| /var/lib/mysql/ |
+—————–+
1 row in set (0.00 sec)