背景: 假设这么一个情况,你是某公司mysql-DBA,某日突然公司数据库中的所有被人为删了. 尽管有数据备份,但是因服务停止而造成的损失上千万,现在公司需要查出那个做删除操作的人. 但是拥有数据库操作权限的人很多,如何排查,证据又在哪? 是不是觉得无能为力? mysql本身并没有操作审计的功能,那是不是意味着遇到这种情况只能自认倒霉呢? 本文就将讨论一种简单易行的,用于mysql访问审计的思路. 关键字:init—connect,binlog,trigger 概述: 其实mysql本身已经提供…
转载自:https://blog.51cto.com/13941177/2173620 一.简介 1.概述 mysql本身已经提供了详细的sql执行记录–general log ,但是开启它有以下几个缺点: 1)无论sql有无语法错误,只要执行了就会记录,导致记录大量无用信息,后期的筛选有难度. 2)sql并发量很大时,log的记录会对io造成一定的印象,是数据库效率降低. 3)日志文件很容易快速膨胀,不妥善处理会对磁盘空间造成一定影响. 2.原理 1) 由于审计的关键在于DML语句,而所有的D…
下面方式是在线开启,重启后会失效: 1.mysql社区版没有审计插件,先获取server_audit.so文件,我是先在一台测试服务器上安装了一个mariadb数据库,然后搜索find / -name server_audit.so文件,scp复制出来的,也可以直接去mariadb官网下载一个二进制包找: #防止server_audit 插件被卸载,需要在配置文件中添加 server_audit=FORCE_PLUS_PERMANENT 4.重启mysql服务 /etc/init.d/mysql…
http://blog.itpub.net/29733787/viewspace-1604392/…
Mysql版本: 5.6.24-72.2 一.通过init-connect + binlog 实现MySQL审计功能 基本原理: 由于审计的关键在于DML语句,而所有的DML语句都可以通过binlog记录. 不过遗憾的是目前MySQL binlog 中只记录,产生这条记录的connection id(随连接数自增,循环使用),这对之后的反查没有任何帮助. 因此考虑通过init-connect,在每次连接的初始化阶段,记录下这个连接的用户,和connection_id信息. 在后期审计进行行为追踪…
目前社区版本的mysql的审计功能还是比较弱的,基于插件的审计目前存在于Mysql的企业版.Percona和MariaDB上,但是mysql社区版本有提供init-connect选项,基于此我们可以用它来完成审计功能. init-connect参数说明: http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_init_connect step1:创建用户数据库表 set names utf8 crea…
mysql基于init-connect+binlog完成审计功能 目前社区版本的mysql的审计功能还是比较弱的,基于插件的审计目前存在于Mysql的企业版.Percona和MariaDB上,但是mysql社区版本有提供init-connect选项,基于此我们可以用它来完成审计功能. init-connect参数说明: http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_init_connect s…
mysql的连接首先都是要通过init-connect初始化,然后连接到实例. 我们利用这一点,通过在init-connect的时候记录下用户的thread_id,用户名和用户地址实现db的访问审计功能. 实现步骤 1.创建审计用的库表. 为了不与业务的库冲突,单独创建自己的库: #建库表代码 create database db_monitor ; use db_monitor ; CREATE TABLE accesslog ( thread_id int(11) DEFAULT NULL,…
[导读] 最近ITPUB技术论坛特意组织网络性讨论活动,关于数据库审计的话题,分享各自公司如何实现数据库审计.个人经验和构想,以及数据库审计的技巧,刚好有网友发了一个典型的审计需求,要帮他分析,以及教其如何实现,为此把内容整理成一片文章分享,供大家参考. MySQL触发器的用处还是非常多地,关键看业务需要,曾经给大家介绍过基于存储引擎MEMORY加触发器的应用场景之一剖析.通过阅读本文,将会告诉大家:触发器的语法知识.触发器的限制.审计案例分析和实现,将逐一讲解. n  语法 CREATE [D…
第一种经验证,有效. 第一种用macfee的mysql审计插件. 下载地址:https://bintray.com/mcafee/mysql-audit-plugin/release/1.1.4-725#files 请根据实际版本进行下载. 下载后解压缩并存放到mysql的lib文件夹 > show variables like 'plugin_dir';+---------------+------------------------------+| Variable_name | Value…
本实验的审计插件均是安装在 mysql-community-server-5.7.9 的服务器上. 插件安装(社区版) 插件下载地址: https://bintray.com/mcafee/mysql-audit-plugin/release#files 解压: # --linux-x86_64.zip Archive: audit-plugin-mysql---linux-x86_64.zip creating: audit-plugin-mysql--/ creating: audit-pl…
1. 前言         为了安全和操作的可追溯性考虑,越来越多的公司增加了审计功能.mysql5.5推出了相关的审计功能,到5.6.20功能进一步完好.算是勉强可用了.尽管细粒度方面做的不是太好.可是兴许版本号还是能够期待一下的.这里主要介绍下相关的功能和特性. 2. 开启审计 2.1 配置文件载入 mysql5.6中的审计是通过audit_log插件来实现的,我们能够在配置文件里载入该插件来开启. [mysqld] plugin-load=audit_log.so 假设希望数据库强制开启审…
对于MySQL.Percona.MariaDB三家都有自己的审计插件,但是MySQL的审计插件是只有企业版才有的,同时也有很多第三方的的MySQL的审计插件,而Percona和MariaDB都是GPL的审计插件.MariaDB的审计插件,默认是没有安装的的,安装该插件并开启审计功能后,可以将对数据库的各种操作记录保存下来,以便追踪操作来源及具体操作. MariaDB版本: Server version: 10.4.19-MariaDB (该版本自带了server_audit插件) 一.Maria…
MySQL日志功能详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查询日志 它是用来保存所有跟查询相关的日志,这种日志类型默认是关闭状态的,因为MySQL的用户有很多,如果将每个用户的查询操作都记录下来的话,对服务器的资源开销也是一件令人烦恼的事情.查询日志常见的几个参数: mysql> show global variables like 'log'; #查看是否记录所有语句的日志信息于一般查询日志文件(general_log),默认是关闭状态. +--------…
paramiko模块是一个远程连接服务器,全真模拟ssh2协议的python模块,借助paramiko源码包中的demos目录下:demo.py和interactive.py两个模块实现简单的堡垒机+审计功能.编写的run_demo.py脚本,可以根据登陆堡垒机的用户信息在数据库查询该用户所有可以登陆的服务器列表,用户可以根据索引选择登陆.为防止用户退出脚本后不中断shell会话,导致不安全的因素,故在用户退出run_demo.py脚本时,会结束已经连接的shell会话,直接退出堡垒机. 一.修…
审计是对选定的用户动作的监控和记录,通常用于: u          审查可疑的活动.例如:数据被非授权用户所删除,此时安全管理员可决定对该 数据库的所有连接进行审计,以及对数据库的所有表的成功地或不成功地删除进行审计. u          监视和收集关于指定数据库活动的数据.例如:DBA可收集哪些被修改.执行了多少次逻辑的I/O等统计数据. ORACLE支持三种审计类型: u          语句审计,对某种类型的SQL语句审计,不指定结构或对象. u          特权审计,对执行相…
导读: MySQL社区版是不带审计功能的,如果要使用MySQL审计,可以考虑使用中间件(例如proxysql)或者是MariaDB的审计插件.这里以MariaDB的审计插件为例,实现MySQL 5.7的审计功能.   版本信息 操作系统版本               :CentOS 7.4 MySQL数据库版本       :MySQL 5.7.27 社区版 MariaDB审计插件版本 :1.4.0   Note: 1.MariaDB审计插件一直在更新,不同版本的审计插件功能也不同,每个版本的…
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var mysql 启动不了   ps -A | grep -i mysql kill 列出来的进程 service mysql start 我的问题就解决了 ---------------------------------------------- Fedora8启动mysql 报错:ERROR 2002 (HY000): Can't connec…
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2) 1.先查看 /etc/rc.d/init.d/mysqld status 看看m y s q l 是否已经启动.另外看看是不是权限问题. 2.确定你的mysql.sock是不是在那个位置,mysql -u 你的mysql用户名 -p -S /var/lib/mysql/mysql.sock 3…
MySQL错误整理: 错误一: ERROR (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 2.解决方法(摘自:http://wenda.haosou.com/q/1364099334067193?src=150) .先查看 /etc/rc.d/init.d/mysqld status 看看mysql是否已经启动. 另外看看是不是权限问题. .确定你的mysql…
ps -A | grep -i mysql kill 列出来的进程 service mysql start 我的问题就解决了 ---------------------------------------------- Fedora8启动mysql 报错:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2) 1.先查看 /etc/rc.d/ini…
启动mysql 报错: ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2) 1.先查看 /etc/rc.d/init.d/mysqld status 看看m y s q l 是否已经启动.另外看看是不是权限问题. 2.确定你的mysql.sock是不是在那个位置,mysql -u 你的mysql用户名 -p -S /var/lib/mysql/…
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var mysql 启动不了   ps -A | grep -i mysql kill 列出来的进程 service mysql start 我的问题就解决了 ---------------------------------------------- Fedora8启动mysql 报错:ERROR 2002 (HY000): Can’t connec…
Fedora8启动mysql 报错:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2) 1.先查看 /etc/rc.d/init.d/mysqld status 看看m y s q l 是否已经启动.另外看看是不是权限问题. 2.确定你的mysql.sock是不是在那个位置,mysql -u 你的mysql用户名 -p -S /var/lib/…
登陆mysql的时候,出现了这个问题: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111) 解决办法: 1.先删除mysql.sock cd /var/lib/mysqlmv  mysql.sock  mysql.sock.bak 2.再次登陆 mysql -uroot -p123456 会出现下面的问题: 报了:Can't connect to local MySQL serv…
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 据说这个问题的原因很多,当然,我自己这个问题我是清楚的,就是mysql.sock的位置所致,一个是PHP要求的,一个是MYSQLD定义的,一个是MY.CONF指定的...SO.... 暂时不能统一的话,用软链接LN -S命令解决吧.. 方案5      摘要:解决不能通过mysql.sock连…
今天服务器遇到了一个很熟悉的问题 输入 #mysql -u root -p ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 在网上寻找了些答案,方面下面方法可行    1.#ps -A|grep mysql    显示类似:   1829 ?        00:00:00 mysqld_safe   1876 ?        00:…
最近上头交给我个任务,把WINDOWS平台下开发的网站,部署在LINUX环境上. 把mysql安装好了,所有表单都导入没问题,然后代码都放在tomcat下的webapps文件夹下了,主页 面可以正常显示,但有两个问题: 用户登录或注册的时候总是提示:Connecting to 192.168.2.109……(linux server的ip): 查看Tomcat  log文件catalina.out里有一堆 [WARN][2014-07-09 21:28:58,706][org.hibernate…
mysql开启远程连接 今天在服务器安装了mysql,准备用mysqlguitools远程登录的时候出错,提示:Host 'xxx' is not allowed to connect to this MySQL server.网上找了一些资料,是mysql未开启mysql远程访问权限导致. 记录解决方案供以后参考.: 1.登录到mysql:  mysql -uroot -ppwd 2.查看user表: mysql> use mysqlDatabase changedmysql> select…
故障现象, ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2 "No such file or directory") 一直 以为是 服务器安装错误, 而且用 dnf info mariadb , 查看到的包的信息, 发现这个包 确实已经被安装过了. 但是 实际上这个包 仅仅提供的是 一个客户端client 的功能 . 并没有mari…