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 直接替换即可

赞(2) 更多分享

上篇: mongodb权限设置--用户名、密码、端口、启动和关闭
下篇: mysql主从同步常见异常及恢复方法