Yearning SQL审核平台
2018/07 作者:ihunter 0 次 0
https://cookiey.github.io/Yearning-document/
http://mysql-inception.github.io/inception-document/
Yearning SQL审核平台,基于Inception的整套sql审核平台解决方案。
Feature 功能:
- 数据库字典自动生成
- SQL查询
- 查询导出
- 查询自动补全
- SQL可视化自动生成
- INDEX 索引语句
- ALTER 更改表结构语句
- SQL审核
- 流程化工单
- SQL语句检测
- SQL语句执行
- SQL回滚
- 历史审核记录
- 推送
- 站内信工单通知
- E-mail工单推送
- 钉钉webhook机器人工单推送
- 其他
- todoList
- LDAP登陆
- 用户权限及管理
- 拼图式权限划分(共12项独立权限,可随意组合)
Environment 环境
Python 3.6
Vue.js 2.5
Django 2.0
相关依赖
python >= 3.6
node >= 6.10 (仅开发模式安装)
nginx
mysql >= 5.6
Inception
安装
生产模式安装:
- 安装 nginx mysql python3.6 (nginx,mysql推荐yum安装。python3.6官方自行下载安装)
- 安装Inception(install目录下有已经编译好的Inception可以直接运行)
- 建立数据库 (库字符集为UTF8 )
- git clone https://github.com/cookieY/Yearning.git
- 编辑 Yearning/src/deploy.conf
[mysql]db = 所创建的库名address = 数据库地址port = 数据库端口password = 数据库密码username = 数据库用户 [host]ipaddress = 服务器ip地址:端口 (涉及跨域十分重要!!设置不正确将无法登陆!!) 如 本机地址为192.168.1.2 nginx设置端口为80 则应填写为 192.168.1.2:80 之后通过该地址访问平台。 [Inception]ip = Inception地址port = Inception端口user = Inception用户名password = Inception密码backupdb = 备份数据库地址backupport = 备份数据库端口backupuser = 备份数据库用户名backuppassword = 备份数据库密码 [LDAP] LDAP相关设置LDAP_SERVER = LDAP服务地址LDAP_SCBASE = LDAP dc 设置 如 dc=xxx,dc=comLDAP_DOMAIN = LDAP域名 如 xxx.comLDAP_TYPE = 1 1 通过域名进行ldap认证 0 通过uid进行ldap认证 [email] 邮箱推送相关设置username = 邮箱发件账号 如 xxxx@163.compassword = 邮箱发件账号密码smtp_server = 邮箱stmp地址, 具体地址请咨询对应邮箱提供者
pip3 install -r requirements.txt 安装相应python依赖库 python3 manage.py makemigrations && python3 manage.py migrate 初始化数据库 echo "from core.models import Account;Account.objects.create_user(username='admin', password='Yearning_admin', group='admin',is_staff=1)" | python3 manage.py shell 添加初始化用户 echo "from core.models import grained;grained.objects.get_or_create(username='admin', permissions={'ddl': '1', 'ddlcon': [], 'dml': '1', 'dmlcon': [], 'dic': '1', 'diccon': [], 'dicedit': '0', 'query': '1', 'querycon': [], 'user': '1', 'base': '1', 'dicexport': '0'})" | python3 manage.py shell 初始化权限 cp -rf Yearning/webpage/dist/* $NGINX_HOME/html/ 复制编译好的静态文件到nginx html目录下(如自行更改Nginx静态路径地址则将静态文件复制到对应静态文件目录下) systemctl start nginx 启动nginx python3 manage.py runserver 0.0.0.0:8000 启动django 访问deploy.conf 配置文件中ipaddress 填写的地址 默认账号: admin 密码:Yearning_admin
开发模式:
- 安装 node mysql python3.6 (mysql推荐yum安装。python3.6,node官方自行下载安装)
- 安装Inception(install目录下有已经编译好的Inception可以直接运行)
- 建立数据库 (库字符集为UTF8 )
- git clone https://github.com/cookieY/Yearning.git
- 编辑 Yearning/src/deploy.conf
[mysql]db = 所创建的库名address = 数据库地址port = 数据库端口password = 数据库密码username = 数据库用户 [host]ipaddress = 服务器ip地址:8080 (涉及跨域十分重要!!设置不正确将无法登陆!!) 如 本机地址为192.168.1.2 则应填写为 192.168.1.2:8080 之后通过该地址访问平台。 [Inception]ip = Inception地址port = Inception端口user = Inception用户名password = Inception密码backupdb = 备份数据库地址backupport = 备份数据库端口backupuser = 备份数据库用户名backuppassword = 备份数据库密码 [LDAP] LDAP相关设置LDAP_SERVER = LDAP服务地址LDAP_SCBASE = LDAP dc 设置 如 dc=xxx,dc=comLDAP_DOMAIN = LDAP域名 如 xxx.comLDAP_TYPE = 1 1 通过域名进行ldap认证 0 通过uid进行ldap认证 [email] 邮箱推送相关设置username = 邮箱发件账号 如 xxxx@163.compassword = 邮箱发件账号密码smtp_server = 邮箱stmp地址, 具体地址请咨询对应邮箱提供者
pip3 install -r requirements.txt python3 manage.py makemigrations && python3 manage.py migrate echo "from core.models import Account;Account.objects.create_user(username='admin', password='Yearning_admin', group='admin',is_staff=1)" | python3 manage.py shell echo "from core.models import grained;grained.objects.get_or_create(username='admin', permissions={'ddl': '1', 'ddlcon': [], 'dml': '1', 'dmlcon': [], 'dic': '1', 'diccon': [], 'dicedit': '0', 'query': '1', 'querycon': [], 'user': '1', 'base': '1', 'dicexport': '0'})" | python3 manage.py shell 初始化权限 cd Yearning/webpage && npm install python3 Yearning/runserver.py 访问deploy.conf 配置文件中ipaddress 填写的地址 默认账号: admin 密码:Yearning_admin
注意事项
默认超级管理员只拥有各个页面的访问权限,其他的权限需自行增加!详情请查看使用说明用户管理
由于Inception 并不原生支持pymysql,所以需更改pymysql相关源码
修改 $PYTHON_HOME/lib/python3.6/site-packages/pymysql下
connections.py 和 cursors.py 两个文件
找到 connections.py 1108行:
if int(self.server_version.split('.', 1)[0]) >= 5:
self.client_flag |= CLIENT.MULTI_RESULTS
更改为:
try: if int(self.server_version.split('.', 1)[0]) >= 5: self.client_flag |= CLIENT.MULTI_RESULTS except: if self.server_version.split('.', 1)[0] >= 'Inception2': self.client_flag |= CLIENT.MULTI_RESULTS
找到 cursors.py 345行:
if self._result and (self._result.has_next or not self._result.warning_count):
return
更改为
if self._result: return
注: 在install 文件夹下有已经修改的connections.py 和 cursors.py 直接替换即可