Sql審核平臺Archery的搭建和簡單配置
Archery是一個開源的Web應用,基于Python開發,利用Flask作為后端框架,前端采用Vue.js,構建了一個現代化的數據操作界面。提供了SQL審核、數據查詢、報表生成等功能,同時支持多種數據庫接入,包括Hive、MySQL、Oracle、SQL Server等。
一.安裝前檢查
#檢查是否安裝docker及docker-compose
docker --version
docker-compose --version
如果沒安裝docker或者docker-compose。
教程:Ubuntu20.04 LTS國內源安裝指定版本Docker_ubuntu 20.04.1 lts 安裝docker-CSDN博客
Docker安裝和卸載(centos)_centos卸載docker-CSDN博客
#docker-compose安裝
#下載docker-compose文件
sudo curl -L https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#添加可執行權限
sudo chmod +x /usr/local/bin/docker-compose
#測試安裝結果
docker-compose --version
二.準備安裝文件
#下載安裝文件
cd /home/
wget https://github.com/hhyo/archery/archive/v1.11.0.tar.gz
#解壓
tar -zxvf v1.11.0.tar.gz
#重命名
mv Archery-1.11.0 archery
#進入docker-compose文件所在位置
cd src/docker-compose/
#/home/archery/src/docker-compose
#內容如下cat docker-compose.ymlversion: '3'services:redis:image: redis:5container_name: redisrestart: alwayscommand: redis-server --requirepass 123456expose:- "6379"healthcheck:test: [ "CMD", "redis-cli", "ping" ]interval: 5stimeout: 5sretries: 5mysql:image: mysql:5.7container_name: mysqlrestart: alwaysports:- "3306:3306"volumes:- "./mysql/my.cnf:/etc/mysql/my.cnf"- "./mysql/datadir:/var/lib/mysql"environment:MYSQL_DATABASE: archeryMYSQL_ROOT_PASSWORD: 123456healthcheck:test: ["CMD", "mysqladmin", "ping"]interval: 5stimeout: 5sretries: 5goinception:image: hanchuanchuan/goinceptioncontainer_name: goinceptionrestart: alwaysports:- "4000:4000"volumes:- "./inception/config.toml:/etc/config.toml"archery:# 下方的鏡像地址僅為示例, 請前往以下地址確認你需要的版本:# dockerhub https://hub.docker.com/r/hhyo/archery# github packages https://github.com/hhyo/Archery/pkgs/container/archery# 如有需要, 也可以自行build docker 鏡像, 替換為自己的鏡像image: hhyo/archery:v1.10.0container_name: archeryrestart: alwaysdepends_on:redis:condition: service_healthymysql:condition: service_healthyports:- "9123:9123"volumes:- "./archery/settings.py:/opt/archery/local_settings.py"- "./archery/soar.yaml:/etc/soar.yaml"- "./archery/docs.md:/opt/archery/docs/docs.md"- "./archery/downloads:/opt/archery/downloads"- "./archery/sql/migrations:/opt/archery/sql/migrations"- "./archery/logs:/opt/archery/logs"- "./archery/keys:/opt/archery/keys"entrypoint: "bash /opt/archery/src/docker/startup.sh"env_file:- .env
#部署
docker-compose up -d
然后查看是否啟動成功
docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
52da46df8ddc registry.cn-hangzhou.aliyuncs.com/docker_image-ljx/mysql:5.7 "docker-entrypoint.s…" 5 hours ago Up 4 seconds (health: starting) 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
efc34350d7df registry.cn-hangzhou.aliyuncs.com/docker_image-ljx/archery:v1.10.0 "bash /opt/archery/s…" 23 hours ago Up 4 seconds 0.0.0.0:9123->9123/tcp, :::9123->9123/tcp archery
92352a46d78a registry.cn-hangzhou.aliyuncs.com/docker_image-ljx/goinception "/usr/local/bin/dumb…" 23 hours ago Up 3 seconds 0.0.0.0:4000->4000/tcp, :::4000->4000/tcp goinception
caa42b1b499c registry.cn-hangzhou.aliyuncs.com/docker_image-ljx/redis:5 "docker-entrypoint.s…" 23 hours ago Up 2 seconds (health: starting) 6379/tcp redis
三.表結構初始化
#確認運行成功后,進入archery容器
docker exec -ti archery /bin/bash#進行如下操作初始化表結構
cd /opt/archery
source /opt/venv4archery/bin/activate
python3 manage.py makemigrations sql
python3 manage.py migrate # 數據初始化
python3 manage.py dbshell<sql/fixtures/auth_group.sql
python3 manage.py dbshell<src/init_sql/mysql_slow_query_review.sql# 創建管理用戶
python3 manage.py createsuperuser
用戶名: admin 電子郵件地址: admin@qq.com Password: admin123 ( 實際操作中密碼是不顯示的 ) Password (again): admin123 密碼跟 用戶名 太相似了。 密碼長度太短。密碼必須包含至少 9 個字符。 這個密碼太常見了。 Bypass password validation and create user anyway? [y/N]: y Superuser created successfully.
四.瀏覽器訪問測試
地址:<主機IP>:9123
,用戶名和密碼就是上一步創建的。
至此安裝步驟完畢。
五.配置數據庫并簡單測試
1.進入實例管理

選擇添加實例
然后填入數據庫相關信息
點擊保存
2.選擇SQL審核
SQL上線,點擊提交SQL。
然后選擇數據庫實例,填入sql。
在觸發檢測的時候可以檢查SQL是否有誤。
修改正確后就可以提交了
3.點擊審核通過,并且立即執行
我們可以看到數據庫里已經多出了這一條數據
執行成功后還可以查看或者下載回滾SQL對該操作進行回滾。