Inception服务的安装以及使用Python 3 实现MySQL的审计

Bison是Inception服务所依赖的包之一,但是某些Linux版本已安装的Bison,或者是通过yum安装的Bison,通常是Bison 3.0+版本的.
对于Inception程序来说,其Bison版本是过高的,会导致Inception在编译的过程出错,按照官方的建议,最好需要Bison 2.5这个版本。
因此需要手动安装Bison 2.5这个版本的依赖包。

Bison的安装

Bison下载

  下载地址,选择合适的版本和压缩文件 ,这里下载的是bison-2.5.1.tar.xz这个版本的包。

解压

  xz -d bison-2.5.1.tar.xz
  tar -xvf bison-2.5.1.tar

Inception服务的安装以及使用Python 3 实现MySQL的审计

  安装

  进入解压后的bison路径中,cd bison-2.5.1,按照正常的源码包依次编译安装即可。
  ./configure
  make && make install

  

Inception服务的安装以及使用Python 3 实现MySQL的审计

  完成安装,检查Bison的版本,bison  -V(记得之前要设置环境变量的,这里安装完之后直接就识别Bison命令了)。

  

Inception服务的安装以及使用Python 3 实现MySQL的审计

  最后安装其其他的相关依赖包
    yum install gcc gcc-c++ cmake openssl-devel ncurses-devel MySQL-Python git –y

 

Inception的安装 

 源码下载

  下载源代码 git clone https://github.com/mysql-inception/inception.git

  

  编译&&安装

  进入Inception目录之后执行:bash inception_build.sh debug [Xcode]
  经过十几分钟漫长的编译安装完成之后,确认安装成功。
  如果是第一次安装失败,可能是缺少依赖的包或者是依赖的包的版本不对,可以根据具体的错误进行处理,重新安装需要删除安装失败生成的debug目录,否则无法继续安装。

  

Inception服务的安装以及使用Python 3 实现MySQL的审计

  添加一个最基本的Inception配置文件

  

Inception服务的安装以及使用Python 3 实现MySQL的审计

  启动Inception服务

    /usr/local/inception/debug/mysql/bin/Inception --defaults-file=/etc/inc.cnf &

  

Inception服务的安装以及使用Python 3 实现MySQL的审计

  从本地连接至Inception服务

  

Inception服务的安装以及使用Python 3 实现MySQL的审计

    至此,Inception服务已完全安装成功。

 使用Python(Python3)实现MySQL的审计作业

  Inception在验证MySQL脚本的有效性的时候,有自己的特定的格式,因此要将带验证(执行)的sql脚本组装成Inception服务指定的格式。

--Inception开始标志 /*--user=username;--password=*****;--host=***.***.***.***;--enable-check;--port=3306;*/ inception_magic_start; --中间开始是sql语句 use mysql; CREATE TABLE adaptive_office(id int); --Inception结束标志 inception_magic_commit;

  网上大多数环境使用Python做Inception的审计,应该使用的是Python2,如果换做是Python3,发现根本无法正常连接至Inception服务。
  正常连接的时候,一直报错:“invalid literal for int() with base 10: 'Inception2'”
  原因应该是connections.py在连接到Inception服务参数解析类型转换的时候有一点问题。
  参考:,修改Python的connections.py文件中的_request_authentication方法
  这样才能使用Python3正常连接至Inception服务。

Inception服务的安装以及使用Python 3 实现MySQL的审计

如下是一个使用Python做MySQL脚本审计的一个demo

#!/usr/bin/python # -\*-coding: utf-8-\*- import pymysql import sys, os import time # 执行还是校验 operation = '--enable-check' # operation = '--enable-execute;--enable-ignore-warnings;--enable-force' # 发布目标服务器 connstr_target = {'host': '***.***.***.***', 'port': 3306, 'user': 'root', 'password': '***', 'db': 'inception_testdb', 'charset': 'utf8mb4'} # inception server connstr_inception = {'host': '***.***.***.***', 'port': 6669, 'user': 'root', 'password': '', 'db': '', 'charset': 'utf8mb4'} # inception格式要求 prefix_format = "/*--user={};--password={};--host={};{};--port={};*/ ".format(connstr_target['user'], connstr_target['password'], connstr_target['host'], operation, connstr_target['port']) \ + '\n' \ + "inception_magic_start;" suffix_format = "inception_magic_commit;" #待执行的sql语句 sql_demo1 = ''' use inception_testdb; alter table test_inception add column remark varchar(200);''' try: # 将待执行的sql语句组合成inception识别的格式 sql_demo1_with_format = prefix_format + "\n" + sql_demo1 + "\n" + suffix_format print(sql_demo1_with_format) # 连接至inception 服务器 conn_inception = pymysql.connect(host=connstr_inception['host'], port=connstr_inception['port'], user=connstr_inception['user'], password=connstr_inception['password'], charset=connstr_inception['charset']) cur = conn_inception.cursor() cur.execute(sql_demo1_with_format) result = cur.fetchall() num_fields = len(cur.description) field_names = [i[0] for i in cur.description] print(field_names) #打印出来Inception对MySQL语句的审计结果 for row in result: print(row[0], "|", row[1], "|", row[2], "|", row[3], "|", row[4], "|", row[5], "|", row[6], "|", row[7], "|", row[8], "|", row[9], "|", row[10]) cur.close() conn_inception.close() except Exception as err: print(err) finally: print('****************')

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/78eeceb943af4bde5cc456be0121eaa5.html