获取MySQL查询日志
Oracle 的 MySQL 社区版不带审计插件,要想使用审计功能,你可以用企业版,不过这需要 money 。(作为白嫖党,今天介绍一下怎么使用社区版,还能获取查询记录)
一、准备审计插件
审计插件来源于 MariaDB
注意:使用 MariaDB 与 MySQL 对应的版本
其对应关系
MariaDB 5.5 对应 MySQL 5.5
5.5以下的版本都是上述对应关系
MariaDB 10.0 对应 MySQL 5.6
MariaDB 10.1 对应 MySQL 5.7
MariaDB 是 MySQL 的一个分支版本,可以很好的兼容。
获取方法一
MariaDB官网上下载 Linux 的通用版本,解压后获得审计插件 /lib/plugin/server_audit.so
获取方法二
# 安装 MariaDB 的 docker 环境,
# 查找 MariaDB 的容器ID <MariaDB_ID>
docker ps
# 进入容器
docker exec –it <MariaDB_ID> /bin/bash
# 查找 server_audit.so 所在位置 <path/server_audit.so>
find / -name server_audit.so
# 把插件拷贝至宿主机根目录
docker cp <MariaDB_ID>:/<path/server_audit.so> /
二、将插件移动至 MySQL 插件目录
# 查找 MySQL 插件目录 <mysql_plugin_path>
find / -name plugin
# 移动插件至 MySQL 插件目录
mv /server_audit.so <mysql_plugin_path>
# 设置插件权限
chmod 755 <mysql_plugin_path>/server_audit.so
三、关闭SELinux
# 临时关闭
setenforce 0
# 永久关闭
vi /etc/selinux/config
...
SELINUX=disabled
...
如果不关闭,在 MySQL 加载插件时会出现 cannot open shared object file: Permission denied
错误。
四、设置MySQL
# 进入 MySQL
mysql –u<user> -p<passwd>
...
# 以下内容请于MySQL交互界面设置
# 加载、使用插件
install plugin server_audit SONAME 'server_audit.so';
SET GLOBAL server_audit_logging=ON;
SET GLOBAL server_audit_events='connect,query';
SET GLOBAL server_audit_file_rotate_now=ON;
...
为了重新启动后也能生效,可以在 MySQL 的配置文件添加相应的设置。
总结
以上就是如何利用 MariaDB 的审计插件来审计 MySQL 的查询日志。