背景:

关于MySQL的审核的重要性就不说明了,本文的自动化审核是通过InceptionSQLAdvisor实现的,具体的使用可以看它们各自的说明文档。这里大致介绍下如何部署和使用它们,其实该文章也可以说成是如何在ubuntu下安装Inception和SQLAdivsor。本文的web平台是通过python的tornado来实现的,详细信息可以看下面的介绍说明。

环境:

系统:Ubuntu 14.04.5

安装部署:

1)安装Inception

① 下载inception

git clone https://github.com/mysql-inception/inception.git

② 安装依赖包

1,cmake:
sudo apt-get install cmake:

2,libncurses5-dev:
sudo apt-get install libncurses5-dev

3,libssl-dev:
sudo apt-get install libssl-dev

4,g++
sudo apt-get install g++

5,m4
sudo  apt-get install m4

6,bison:版本最好是2.6之前的,最新的可能会有问题
wget http://ftp.gnu.org/gnu/bison/bison-2.5.1.tar.gz
./configure 
make
make install

做个软连接:

 ln -s /usr/local/inception-master_2.1.50/sql/Inception /usr/bin/Inception

③ 安装inception

1 安装,进入clone的目录执行:
sh inception_build.sh debug
上面执行完毕之后再执行,可执行文件在debug下面的sql目录中,执行:
mv debug/ /usr/local/inception-master_2.1.50

2 查看版本:
cd /usr/local/inception-master_2.1.50/sql
./Inception -V
./Inception  Ver Inception2.1.50 for Linux on x86_64 (Source distribution)

④ 安装percona-toolkit

wget https://www.percona.com/downloads/percona-toolkit/2.2.20/tarball/percona-toolkit-2.2.20.tar.gz

tar zxvf percona-toolkit-2.2.20.tar.gz 

cd percona-toolkit-2.2.20/

perl Makefile.PL 

make install

⑤ 测试Inception:

命令行启动:

Inception --port=6669
2017-03-27 00:45:31 0 [Note] Welcome to use Inception2.1.50
2017-03-27 00:45:31 26811 [Note] Server hostname (bind-address): '*'; port: 6669
2017-03-27 00:45:31 26811 [Note] IPv6 is available.
2017-03-27 00:45:31 26811 [Note]   - '::' resolves to '::';
2017-03-27 00:45:31 26811 [Note] Server socket created on IP: '::'.

参数启动:可以根据需要来调整参数

Inception --defaults-file=/etc/inception/inc.cnf

各个参数的意义

[inception]
general_log=1
general_log_file=/var/log/inception.log
port=6669
socket=/tmp/inc.socket
character-set-client-handshake=0
character-set-server=utf8

#备份相关
#需要开启binlog
inception_remote_system_password=cVQ9FLoiTbED2R3ycvnJ
inception_remote_system_user=audit_user
inception_remote_backup_port=3306
inception_remote_backup_host=192.168.200.49

#在DML语句中没有WHERE条件时,是不是要报错
inception_check_dml_where=1
#在DML语句中使用了LIMIT时,是不是要报错
inception_check_dml_limit=1
#在DML语句中使用了Order By时,是不是要报错
inception_check_dml_orderby
#Select*时是不是要报错
inception_enable_select_star=1
#order by rand时是不是报错
inception_enable_orderby_rand=1
#创建或者新增列时如果列为NULL,是不是报错
inception_enable_nullable=1
#是不是支持外键
inception_enable_foreign_key=1
#一个索引中,列的最大个数,超过这个数目则报错(1-64)
inception_max_key_parts=5
#在一个修改语句中,预计影响的最大行数,超过这个数就报错(1-max)
inception_max_update_rows=10000
#一个表中,最大的索引数目,超过这个数则报错(1-1024)
inception_max_keys=16
#建表指定的存储引擎不为Innodb,不报错
inception_enable_not_innodb=0
#表示在建表或者建库时支持的字符集,如果需要多个,则用逗号分隔,影响的范围是建表、设置会话字符集、修改表字符集属性等
inception_support_charset=utf8mb4
#建表时,表没有注释时报错
inception_check_table_comment=1
#建表时,列没有注释时报错
inception_check_column_comment=1
#建表时,如果没有主键,则报错
inception_check_primary_key=1
#是不是支持分区表
inception_enable_partition_table=0
#是不是支持enum,set,bit数据类型
inception_enable_enum_set_bit=0
#是不是要检查索引名字前缀为"idx_",检查唯一索引前缀是不是"uniq_"
inception_check_index_prefix=1
#自增列是不是要为无符号型
inception_enable_autoincrement_unsigned=1
#当char类型的长度大于这个值时,就提示将其转换为VARCHAR(1-max)
inception_max_char_length=16
#当建表时自增列的值指定的不为1,则报错
inception_check_autoincrement_init_value=1
#当建表时自增列的类型不为int或者bigint时报错
inception_check_autoincrement_datatype=1
#建表时,如果没有为timestamp类型指定默认值,则报错
inception_check_timestamp_default=0
#允许列自己设置字符集
inception_enable_column_charset=0
#建表时,如果指定的自增列的名字不为ID,则报错,说明是有意义的,给提示
inception_check_autoincrement_name=1
#在多个改同一个表的语句出现时,报错,提示合成一个
inception_merge_alter_table=1
#检查在建表、修改列、新增列时,新的列属性是不是要有默认值
inception_check_column_default_value=1
#检查是不是支持BLOB字段,包括建表、修改列、新增列操作
inception_enable_blob_type=1
#检查在SQL语句中,是不是有标识符被写成MySQL的关键字,默认值为报警。
inception_enable_identifer_keyword=1
#这个参数的作用是为了匹配Python客户端每次自动设置auto_commit=0的,如果取消则会报错,针对Inception本身没有实际意义
#auto_commit=0
#这个参数实际上就是MySQL数据库原来的参数,因为Incpetion没有权限验证过程,那么为了实现更安全的访问,可以给Inception服务器的这个参数设置某台机器(Inception上层的应用程序)不地址,这样
#其它非法程序是不可访问的,那么再加上Inception执行的选项中的用户名密码,对MySQL就更加安全
bind_address=127.0.0.1
#inception_user
#inception_password
#inception_enable_sql_statistic
#inception_read_only
#打开与关闭Inception对SQL语句中各种名字的检查,如果设置为ON,则如果发现名字中存在除数字字母下划线之外的字符时,报Identifier "invalidname" is invalid, valid options: [a-z,A-Z,0-9,_].
inception_check_identifier=1

#inception_osc_min_table_size=1
#inception_osc_bin_dir=/data/temp
#inception_osc_chunk_time=0.1
View Code

相关文章:

  • 2022-12-23
  • 2022-01-09
  • 2022-12-23
  • 2022-01-23
  • 2021-05-03
  • 2021-08-14
  • 2022-02-12
  • 2022-01-01
猜你喜欢
  • 2021-12-04
  • 2021-05-23
  • 2022-12-23
  • 2022-02-16
  • 2021-06-26
  • 2022-02-09
  • 2021-08-13
相关资源
相似解决方案