广告
返回顶部
首页 > 资讯 > 数据库 >MySQL审计
  • 957
分享到

MySQL审计

MySQL 2023-01-30 21:01:25 957人浏览 安东尼
摘要

线上的数据库,开发可以直接navicat软件直接操作。一旦发生数据泄露,后果严重。需要禁止使用navicat,使用命令行操作,并且能记录每个开发执行的sql语句。在跳板机上面写了一个shell脚本,开发只能通过执行shell脚本,来连接数据

线上的数据库开发可以直接navicat软件直接操作。一旦发生数据泄露,后果严重。需要禁止使用navicat,使用命令行操作,并且能记录每个开发执行的sql语句。


在跳板机上面写了一个shell脚本,开发只能通过执行shell脚本,来连接数据库

环境如下:

跳板机-->Centos7-->192.168.78.133

Mysql-->centos6.5-->192.168.78.128


1.在跳板机安装PHP,mysql

yum -y install php mariadb-server mariadb mariadb-devel

启动数据库

systemctl start mariadb

2.创建数据库和表

进入数据库
mysql -u root
创建数据库
CREATE DATABASE audit DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
use audit;
创建表
CREATE TABLE `tbl_sql_record` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `rds` varchar(30) NOT NULL DEFAULT '' COMMENT '实例名',
  `username` varchar(30) NOT NULL DEFAULT '' COMMENT '用户名',
  `content` text NOT NULL COMMENT 'sql命令',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`),
  KEY `title` (`create_time`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='sql记录表';

3.MySQL服务器创建只读账号

GRANT Select ON *.* TO zhangsan@'%' IDENTIFIED BY "123456";
flush privileges;

4.接下来的操作,都在跳板机上面

编辑php文件,用来将sql语句转换为JSON

vim /opt/1.php

内容如下:

<?php
array_shift($argv);
$str=implode(' ',$argv);
$sql=json_encode($str);
echo $sql;

编辑shell脚本

vim /opt/sql_con.sh

内容如下:

#!/bin/bash

#MySQL主机列表
db_base='192.168.78.128'

#默认端口号
PORT='3306'
#输出页面
OPTioN=`whiptail --title "连接MySQL" --menu "请选择MySQL" 20 40 10 \
"1" "db_base" \
"2" "退出程序" \
3>&1 1>&2 2>&3`

#数字匹配
if [ $? = 0 ]; then
    case $OPTION in
    1)
        HOST=$db_base
        RDS="db_base"
    ;;
    *)
        echo "程序退出"
        exit
    ;;
    esac
    #用户名和密码输入框
    USERNAME=$(whiptail --title "RDS 用户认证" --inputbox "请输入用户名?" 10 60 3>&1 1>&2 2>&3)
    PASSWord=$(whiptail --title "RDS 密码认证" --passwordbox "请输入密码" 10 60 3>&1 1>&2 2>&3)
    #显示RDS所有数据库,-N不显示标题
    data=$(/usr/bin/mysql -h $HOST -u $USERNAME -p$PASSWORD -P$PORT -N -e 'show databases' > /tmp/"$USERNAME"_data.txt)
    if [ $? != 0 ];then
        echo -e "\033[31m 用户验证失败,程序退出 \033[0m"
        exit
    fi
    echo -e "\033[32m 数据库列表: \033[0m"
    echo "===================="
    #过滤掉默认的数据库
    cat /tmp/"$USERNAME"_data.txt | grep -E -v 'infORMation_schema|mysql|performance_schema'
    #grep -E -v 'information_schema' $data
    echo "===================="
    echo -e "\033[32m 请输入sql语句或者exit退出 \033[0m"


    #执行sql语句方法
    query(){
        #mysql>提示符
        read -p  "mysql> " SQL
        #判断输入不为空或者exit
        if [ "$SQL" != "" ] && [ "$SQL" != "exit" ];then
            #当输入\G时,替换为\\g
            sql_ex=$(echo "$SQL" | sed 's@\G;$@\\G;@g')
            #判断sql是否包含select
            result=$(echo $sql_ex | grep -i "select")
            #判断结果,不为空,表示匹配
            if [[ "$result" != "" ]];then
                #增加显示返回的行数和执行时间,select语句使用FOUND_ROWS()方法显示返回的行数,timestampdiff返回2个时间的差值
                sql_query="set @d=now();""$sql_ex"";SELECT FOUND_ROWS() as affected_lines;select timestampdiff(second,@d,now()) as execution_time;"
            else
                #delete,insert,update...其他语句使用ROW_COUNT()方法显示影响的行数
                sql_query="set @d=now();""$sql_ex"";SELECT ROW_COUNT() as affected_lines;select timestampdiff(second,@d,now()) as execution_time;"
            fi
            #执行insert sql语句
            /usr/bin/mysql -h $HOST -u $USERNAME -p$PASSWORD -P$PORT -e "$sql_query"
            #当执行不成功时,提示错误
            if [ $? != 0 ];then
                echo -e "\033[31m sql执行错误 \033[0m"
            else
                #插入数据库
                #sql语句转换为json
                content=$(/usr/bin/php /opt/1.php "$sql_ex")
                #当前时间
                statime=`date +%Y-%m-%d" "%H:%M:%S`
                #insert语句,双引号需要转义,content已经转义为json了
                insert="insert into audit.tbl_sql_record set rds=\"$RDS\",username=\"$USERNAME\",content=$content,create_time=\"$statime\"";
                #执行insert语句
                /usr/bin/mysql -u root -e "$insert"
            fi
        fi
    }
    #当sql不等于exit时,循环执行方法
    while [[ $SQL != "exit" ]]
    do
         query
    done
fi

执行shell脚本,执行sql语句

3.gif

登录跳板机

进入本机的mysql,创建远程授权账号,方便navicat查看sql执行记录

mysql -u root
grant all PRIVILEGES on *.* to owner@'%' identified by 'owner@123';
flush privileges;

使用navicat新建连接

图片.png

查看数据表

图片.png


您可能感兴趣的文档:

--结束END--

本文标题: MySQL审计

本文链接: https://www.lsjlt.com/news/178968.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL审计
    线上的数据库,开发可以直接navicat软件直接操作。一旦发生数据泄露,后果严重。需要禁止使用navicat,使用命令行操作,并且能记录每个开发执行的SQL语句。在跳板机上面写了一个shell脚本,开发只能通过执行shell脚本,来连接数据...
    99+
    2023-01-30
    MySQL
  • Mysql数据库审计
    Mysql数据库审计  简介    数据库审计(简称DBAudit)能够实时记录网络上的数据库活动,对数据库操作进行细粒度审计的合规性管理,对数据库遭受到的风险...
    99+
    2022-10-18
  • 【MySQL】MySQL审计操作记录
    server_audit是一款内嵌在mariadb的审计插件,在mysql中同样适用,主要用于记录用户操作 1.安装: 通过show variables like 'plugin_dir';查看你的插件目录...
    99+
    2022-10-18
  • mysql 5.7 安装SQL审计
    1、为了数据库安全准备开启SQL审计功能,选用MariaDB Audit Plugin的插件(Oracle MySQL 5.7.24) mysql> show variables like 'vers...
    99+
    2022-10-18
  • MySQL审计插件使用
    下载MySQL审计插件https://github.com/mcafee/mysql-audit/releasesor本文使用mcafee官网下载链接的软件:https://dl.bintray.com/m...
    99+
    2022-10-18
  • DM7审计之对象审计
    审计机制是DM数据库管理系统安全管理的重要组成部分之一。DM数据库除了提供数据安全保护措施外,还提供对日常事件的事后审计监督。DM具有一个灵活的审计子系统,可以通过它来记录系统级事件、个别用户的行为以及对数...
    99+
    2022-10-18
  • mysql使用mariadb审计插件
    mysql 5.7.12 mariadb  10.1.14 https://mariadb.com/kb/en/mariadb/server_audit-system-variables...
    99+
    2022-10-18
  • mysql审计的示例分析
    这篇文章给大家分享的是有关mysql审计的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。mysql审计插件audit审计插件的二进制包下载地址:到https://bint...
    99+
    2022-10-18
  • MySQL配置数据库审计
    MySQL配置数据库审计 1 背景2 环境3 准备工作4 安装审计4.1 解压审计包4.2 查看数据库插件目录4.3 安装数据库审计插件4.3.1 复制到插件目录4.3.2 修改插件权限4.3.3 设置审计参数4.3.4 修改数据库...
    99+
    2023-08-17
    数据库 mysql java
  • MySQL 5.7.24安装MySQL审计插件小记
    1).到网站(https://bintray.com/version/files/mcafee/mysql-audit-plugin/release/1.1.7-805)下载插件audit-plugin...
    99+
    2022-10-18
  • 【MySQL】数据库审计--MariaDB Audit Plugin
    [root@wallet01 ~]# cd /usr/lib64/mysql/plugin [root@wallet01 plugin]# chmod a+x server_audit.so [root@...
    99+
    2022-10-18
  • mysql如何开启审计功能
    这篇文章给大家分享的是有关mysql如何开启审计功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 mysql audit-访问日志记录 背景: 假设这么一个情况,你是某公...
    99+
    2022-10-18
  • oracle审计
    概述:     数据库审计功能是oracle自身提供的对数据库操作进行记录的功能。     可以审计权限的调用记录、用户的dml操作记录、查询...
    99+
    2022-10-18
  • oracle-审计3
    五、管理对象审计: --5.1 启用对象审计   --案例1:使用select审计 --步骤1:查看启用的对象scott.emp审计选项 select owner, object_name,object_type, in...
    99+
    2023-01-31
    oracle
  • 代码审计-8 ThinkPHP框架代码审计 2
    文章目录 熟悉网站结构确定网站的路由1.通过分析url直接得出路由2.查看app/route.php 了解参数过滤情况SQL注入举例任意文件下载与删除任意文件下载代码分析任意...
    99+
    2023-09-10
    php apache 服务器
  • MySQL审计插件MariaDB Audit Plugin学习总结
    MySQL的社区版没有审计功能,企业版才有审计功能。企业版中自带 Audit Plugin ,名为audit_log.so。但是其它MySQL分支版本也开发了各自的审计功能插件。最常见的就是Percona Audit Log Pl...
    99+
    2016-09-24
    MySQL审计插件MariaDB Audit Plugin学习总结
  • MySQL中怎么启用密码强度审计
    MySQL中怎么启用密码强度审计,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 执行以下命令安装密码强度审计...
    99+
    2022-10-18
  • mysql中怎么开启用户审计功能
    mysql中怎么开启用户审计功能,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 背景: 假设这么一个情况,你是某公司mysql-DBA...
    99+
    2022-10-18
  • Percona mysql 5.6审计日志功能怎么用
    这篇文章给大家分享的是有关Percona mysql 5.6审计日志功能怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。[mysqld]plugin-load="a...
    99+
    2022-10-18
  • Oracle审计参数
    以下操作全是基于Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production 审计参数解析AUDIT_TRAIL...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作