From 9495bc8a0d7a6873b94318cae84b05484b2648c5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 24 Oct 2024 10:33:19 +0000 Subject: [PATCH] deploy: df493a83632b5881fedcd71ddaa7b2eedb0ef498 --- 404.html | 4 ++-- assets/js/597ed821.4a155155.js | 1 + assets/js/597ed821.8e115d07.js | 1 - assets/js/{adc46ca9.5d539ef1.js => adc46ca9.18715136.js} | 2 +- .../{runtime~main.2eb8554c.js => runtime~main.fcc73122.js} | 2 +- docs/FAQ/intro/index.html | 4 ++-- docs/FAQ/mirror/index.html | 4 ++-- docs/FAQ/rollback/index.html | 4 ++-- docs/FAQ/whichdatabase/index.html | 4 ++-- docs/SUMMARY/index.html | 4 ++-- docs/deploy-manual/Docker/index.html | 4 ++-- docs/deploy-manual/DockerCompose/index.html | 4 ++-- docs/deploy-manual/config/index.html | 4 ++-- docs/deploy-manual/intro/index.html | 4 ++-- docs/deploy-manual/rpm/index.html | 6 +++--- docs/deploy-manual/source/index.html | 4 ++-- docs/deploy-manual/upgrade/index.html | 4 ++-- docs/dev-manual/OpenAPI/dmstoken/index.html | 4 ++-- docs/dev-manual/auditplugins/eclipse/index.html | 4 ++-- docs/dev-manual/auditplugins/introduction/index.html | 4 ++-- docs/dev-manual/auditplugins/jetbrains/index.html | 4 ++-- docs/dev-manual/intro/index.html | 4 ++-- docs/dev-manual/plugins/howtodev/index.html | 4 ++-- docs/dev-manual/plugins/howtouse/index.html | 6 +++--- docs/dev-manual/plugins/intro/index.html | 4 ++-- docs/guide/index.html | 4 ++-- docs/intro/index.html | 4 ++-- docs/online-demo/index.html | 4 ++-- docs/quick-usage/index.html | 4 ++-- docs/support/commercial-support/index.html | 4 ++-- docs/support/community-support/index.html | 4 ++-- docs/support/compare/index.html | 4 ++-- docs/user-manual/allinstance/index.html | 4 ++-- docs/user-manual/customrule/index.html | 4 ++-- docs/user-manual/intro/index.html | 4 ++-- docs/user-manual/knowledgebase/index.html | 4 ++-- docs/user-manual/project/CICDintegration/index.html | 4 ++-- docs/user-manual/project/IDEaudit/index.html | 4 ++-- docs/user-manual/project/analysis/index.html | 4 ++-- .../user-manual/project/audit_task/SQLfile_audit/index.html | 4 ++-- docs/user-manual/project/audit_task/baiduyunrds/index.html | 4 ++-- docs/user-manual/project/audit_task/huaweiyunrds/index.html | 4 ++-- docs/user-manual/project/audit_task/intro/index.html | 4 ++-- .../project/audit_task/java_agent_audit/index.html | 4 ++-- .../project/audit_task/java_application_audit/index.html | 4 ++-- .../project/audit_task/metadata_audit/index.html | 4 ++-- docs/user-manual/project/audit_task/mybatis/index.html | 4 ++-- .../project/audit_task/processlist_audit/index.html | 4 ++-- .../user-manual/project/audit_task/slowlog_audit/index.html | 4 ++-- docs/user-manual/project/audit_task/sqlmanage/index.html | 4 ++-- docs/user-manual/project/audit_task/topsql/index.html | 4 ++-- docs/user-manual/project/blacklist-manager/index.html | 4 ++-- .../data_access_control/authorization_list/index.html | 4 ++-- .../project/data_access_control/intro/index.html | 4 ++-- .../data_access_control/permission_template/index.html | 4 ++-- docs/user-manual/project/dataexport/index.html | 4 ++-- docs/user-manual/project/group_member/index.html | 4 ++-- docs/user-manual/project/instance-manager/index.html | 4 ++-- docs/user-manual/project/instance_syn/index.html | 4 ++-- docs/user-manual/project/intro/index.html | 4 ++-- docs/user-manual/project/operation_records/index.html | 4 ++-- docs/user-manual/project/project_create/index.html | 4 ++-- docs/user-manual/project/push-rule/index.html | 4 ++-- docs/user-manual/project/quick_audit/index.html | 4 ++-- docs/user-manual/project/rule-template-manager/index.html | 4 ++-- docs/user-manual/project/whitelist-manager/index.html | 4 ++-- .../project/workflow-template-manager/index.html | 4 ++-- docs/user-manual/project/workflow/audit-workflow/index.html | 4 ++-- .../user-manual/project/workflow/create-workflow/index.html | 4 ++-- docs/user-manual/project/workflow/exec-workflow/index.html | 4 ++-- docs/user-manual/project/workflow/intro/index.html | 4 ++-- .../project/workflow/version-management/index.html | 4 ++-- docs/user-manual/sql-workbench/how-to-configure/index.html | 4 ++-- .../sql-workbench/how-to-quick-deploy/index.html | 4 ++-- docs/user-manual/sql-workbench/how-to-use/index.html | 4 ++-- docs/user-manual/sql-workbench/introduction/index.html | 4 ++-- docs/user-manual/sys-configuration/configuration/index.html | 4 ++-- docs/user-manual/sys-configuration/customize/index.html | 4 ++-- docs/user-manual/sys-configuration/intro/index.html | 4 ++-- docs/user-manual/sys-configuration/login_syn/index.html | 4 ++-- docs/user-manual/sys-configuration/message_syn/index.html | 4 ++-- docs/user-manual/sys-configuration/process_syn/index.html | 4 ++-- docs/user-manual/sys-configuration/webhook/index.html | 4 ++-- docs/user-manual/user-manager/account/index.html | 4 ++-- docs/user-manual/user-manager/intro/index.html | 4 ++-- docs/user-manual/user-manager/role/index.html | 4 ++-- docs/user-manual/user-manager/user/index.html | 4 ++-- docs/v2/FAQ/intro/index.html | 4 ++-- docs/v2/FAQ/whichdatabase/index.html | 4 ++-- docs/v2/SUMMARY/index.html | 4 ++-- docs/v2/deploy-manual/cluster/index.html | 4 ++-- docs/v2/deploy-manual/config/index.html | 4 ++-- docs/v2/deploy-manual/docker-compose/index.html | 4 ++-- docs/v2/deploy-manual/docker/index.html | 4 ++-- docs/v2/deploy-manual/intro/index.html | 4 ++-- docs/v2/deploy-manual/rpm/index.html | 4 ++-- docs/v2/deploy-manual/source/index.html | 4 ++-- docs/v2/dev-manual/intro/index.html | 4 ++-- docs/v2/dev-manual/plugins/howtodev/index.html | 4 ++-- docs/v2/dev-manual/plugins/howtouse/index.html | 4 ++-- docs/v2/dev-manual/plugins/intro/index.html | 4 ++-- docs/v2/guide/index.html | 4 ++-- docs/v2/intro/index.html | 4 ++-- docs/v2/online-demo/index.html | 4 ++-- docs/v2/quick-usage/index.html | 4 ++-- docs/v2/support/commercial-support/index.html | 4 ++-- docs/v2/support/community-support/index.html | 4 ++-- docs/v2/support/compare/index.html | 4 ++-- docs/v2/user-manual/customrule/index.html | 4 ++-- docs/v2/user-manual/intro/index.html | 4 ++-- docs/v2/user-manual/jetbrains/index.html | 4 ++-- docs/v2/user-manual/operation_records/index.html | 4 ++-- docs/v2/user-manual/project/analysis/index.html | 4 ++-- .../user-manual/project/audit_task/SQLfile_audit/index.html | 4 ++-- .../user-manual/project/audit_task/baiduyunrds/index.html | 4 ++-- docs/v2/user-manual/project/audit_task/intro/index.html | 4 ++-- .../project/audit_task/java_agent_audit/index.html | 4 ++-- .../project/audit_task/java_application_audit/index.html | 4 ++-- .../project/audit_task/metadata_audit/index.html | 4 ++-- docs/v2/user-manual/project/audit_task/mybatis/index.html | 4 ++-- .../project/audit_task/processlist_audit/index.html | 4 ++-- .../user-manual/project/audit_task/slowlog_audit/index.html | 4 ++-- docs/v2/user-manual/project/audit_task/topsql/index.html | 4 ++-- docs/v2/user-manual/project/group_member/index.html | 4 ++-- docs/v2/user-manual/project/instance-manager/index.html | 4 ++-- docs/v2/user-manual/project/intro/index.html | 4 ++-- docs/v2/user-manual/project/project_create/index.html | 4 ++-- .../v2/user-manual/project/rule-template-manager/index.html | 4 ++-- docs/v2/user-manual/project/whitelist-manager/index.html | 4 ++-- .../project/workflow-template-manager/index.html | 4 ++-- .../user-manual/project/workflow/audit-workflow/index.html | 4 ++-- .../user-manual/project/workflow/create-workflow/index.html | 4 ++-- .../user-manual/project/workflow/exec-workflow/index.html | 4 ++-- docs/v2/user-manual/project/workflow/intro/index.html | 4 ++-- .../user-manual/sql-workbench/how-to-configure/index.html | 4 ++-- .../sql-workbench/how-to-quick-deploy/index.html | 4 ++-- docs/v2/user-manual/sql-workbench/how-to-use/index.html | 4 ++-- docs/v2/user-manual/sql-workbench/introduction/index.html | 4 ++-- .../user-manual/sys-configuration/configuration/index.html | 4 ++-- docs/v2/user-manual/sys-configuration/customize/index.html | 4 ++-- .../user-manual/sys-configuration/instance_syn/index.html | 4 ++-- docs/v2/user-manual/sys-configuration/intro/index.html | 4 ++-- docs/v2/user-manual/sys-configuration/login_syn/index.html | 4 ++-- .../v2/user-manual/sys-configuration/message_syn/index.html | 4 ++-- .../v2/user-manual/sys-configuration/process_syn/index.html | 4 ++-- docs/v2/user-manual/sys-configuration/webhook/index.html | 4 ++-- docs/v2/user-manual/user-manager/intro/index.html | 4 ++-- docs/v2/user-manual/user-manager/role/index.html | 4 ++-- docs/v2/user-manual/user-manager/user-group/index.html | 4 ++-- docs/v2/user-manual/user-manager/user/index.html | 4 ++-- index.html | 4 ++-- markdown-page/index.html | 4 ++-- search/index.html | 4 ++-- 153 files changed, 303 insertions(+), 303 deletions(-) create mode 100644 assets/js/597ed821.4a155155.js delete mode 100644 assets/js/597ed821.8e115d07.js rename assets/js/{adc46ca9.5d539ef1.js => adc46ca9.18715136.js} (89%) rename assets/js/{runtime~main.2eb8554c.js => runtime~main.fcc73122.js} (84%) diff --git a/404.html b/404.html index f0a114b5..20909c7d 100644 --- a/404.html +++ b/404.html @@ -4,13 +4,13 @@ 找不到页面 | SQLE 文档 - +
跳到主要内容

找不到页面

我们找不到您要找的页面。

请联系原始链接来源网站的所有者,并告知他们链接已损坏。

- + \ No newline at end of file diff --git a/assets/js/597ed821.4a155155.js b/assets/js/597ed821.4a155155.js new file mode 100644 index 00000000..c52e982c --- /dev/null +++ b/assets/js/597ed821.4a155155.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunksqle_docs=self.webpackChunksqle_docs||[]).push([[7843],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var i=r.createContext({}),p=function(e){var t=r.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},s=function(e){var t=p(e.components);return r.createElement(i.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,i=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(n),d=a,f=u["".concat(i,".").concat(d)]||u[d]||m[d]||l;return n?r.createElement(f,o(o({ref:t},s),{},{components:n})):r.createElement(f,o({ref:t},s))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,o=new Array(l);o[0]=d;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c[u]="string"==typeof e?e:a,o[1]=c;for(var p=2;p{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>o,default:()=>u,frontMatter:()=>l,metadata:()=>c,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const l={title:"RPM \u5b89\u88c5"},o="RPM\u5b89\u88c5",c={unversionedId:"deploy-manual/rpm",id:"deploy-manual/rpm",title:"RPM \u5b89\u88c5",description:"\u73af\u5883\u51c6\u5907",source:"@site/docs/deploy-manual/rpm.md",sourceDirName:"deploy-manual",slug:"/deploy-manual/rpm",permalink:"/sqle-docs/docs/deploy-manual/rpm",draft:!1,editUrl:"https://github.com/actiontech/sqle-docs/tree/main/docs/deploy-manual/rpm.md",tags:[],version:"current",frontMatter:{title:"RPM \u5b89\u88c5"},sidebar:"tutorialSidebar",previous:{title:"\u6e90\u7801\u5b89\u88c5",permalink:"/sqle-docs/docs/deploy-manual/source"},next:{title:"Docker\u90e8\u7f72",permalink:"/sqle-docs/docs/deploy-manual/Docker"}},i={},p=[{value:"\u73af\u5883\u51c6\u5907",id:"\u73af\u5883\u51c6\u5907",level:2},{value:"\u4e0b\u8f7d\u5b89\u88c5\u5305",id:"\u4e0b\u8f7d\u5b89\u88c5\u5305",level:2},{value:"\u5b89\u88c5 SQLE",id:"\u5b89\u88c5-sqle",level:2},{value:"\u521b\u5efa\u6570\u636e\u5e93",id:"\u521b\u5efa\u6570\u636e\u5e93",level:2},{value:"\u4fee\u6539 SQLE \u914d\u7f6e\u6587\u4ef6",id:"\u4fee\u6539-sqle-\u914d\u7f6e\u6587\u4ef6",level:2},{value:"\u542f\u52a8 SQLE",id:"\u542f\u52a8-sqle",level:2},{value:"\u8bbf\u95eeSQLE",id:"\u8bbf\u95eesqle",level:2},{value:"\u542f\u52a8\u5931\u8d25\u95ee\u9898\u8bca\u65ad",id:"\u542f\u52a8\u5931\u8d25\u95ee\u9898\u8bca\u65ad",level:2}],s={toc:p};function u(e){let{components:t,...n}=e;return(0,a.kt)("wrapper",(0,r.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"rpm\u5b89\u88c5"},"RPM\u5b89\u88c5"),(0,a.kt)("h2",{id:"\u73af\u5883\u51c6\u5907"},"\u73af\u5883\u51c6\u5907"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"CentOS 7"),(0,a.kt)("li",{parentName:"ul"},"MySQL 5.7")),(0,a.kt)("h2",{id:"\u4e0b\u8f7d\u5b89\u88c5\u5305"},"\u4e0b\u8f7d\u5b89\u88c5\u5305"),(0,a.kt)("p",null,"\u4e0b\u8f7d SQLE \u7684 RPM \u5b89\u88c5\u5305\uff0c\u4e0b\u8f7d\u8fde\u63a5\u70b9\u51fb",(0,a.kt)("a",{parentName:"p",href:"https://github.com/actiontech/sqle/releases"},"\u8fd9\u91cc"),"\u3002"),(0,a.kt)("h2",{id:"\u5b89\u88c5-sqle"},"\u5b89\u88c5 SQLE"),(0,a.kt)("p",null,"\u6267\u884c RPM \u7684\u5b89\u88c5\u547d\u4ee4\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-sh"},"rpm -ivh /path/to/sqle-ce-${version}.qa.el7.x86_64.rpm --prefix=/opt/sqle\n")),(0,a.kt)("h2",{id:"\u521b\u5efa\u6570\u636e\u5e93"},"\u521b\u5efa\u6570\u636e\u5e93"),(0,a.kt)("p",null,"\u51c6\u5907\u4e00\u53f0 MySQL5.7 \u4f5c\u4e3a SQLE \u7684\u540e\u7aef\u5b58\u50a8\u6570\u636e\u5e93\u3002\u6267\u884c\u4e0b\u9762\u547d\u4ee4\u521b\u5efa SQLE \u9700\u8981\u7684 schema\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-sql"},"CREATE DATABASE IF NOT EXISTS sqle default character set utf8mb4 collate utf8mb4_unicode_ci;\nCREATE DATABASE IF NOT EXISTS dms default character set utf8mb4 collate utf8mb4_unicode_ci;\n")),(0,a.kt)("admonition",{type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"\u521b\u5efa\u597d\u7684 Schema \u5c06\u5728\u4e0b\u9762\u4fee\u6539SQLE\u914d\u7f6e\u65f6\u4f7f\u7528\u5230\u3002")),(0,a.kt)("h2",{id:"\u4fee\u6539-sqle-\u914d\u7f6e\u6587\u4ef6"},"\u4fee\u6539 SQLE \u914d\u7f6e\u6587\u4ef6"),(0,a.kt)("p",null,"\u5b89\u88c5\u5b8c SQLE \u540e\uff0c\u9700\u8981\u6839\u636e\u5b9e\u9645\u60c5\u51b5\u4fee\u6539SQLE\u7684\u914d\u7f6e\uff0c\u53c2\u8003\uff1a",(0,a.kt)("a",{parentName:"p",href:"/sqle-docs/docs/deploy-manual/config"},"\u914d\u7f6e\u6587\u4ef6\u8bf4\u660e"),"\u3002SQLE\u5b89\u88c5\u5b8c\u6210\u540e\u63d0\u4f9b\u4e00\u4e2a\u914d\u7f6e\u6a21\u7248\u53ef\u76f4\u63a5\u4fee\u6539\u3002"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-sh"},"cd /opt/sqle/etc\nvim config.yaml\n")),(0,a.kt)("admonition",{type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"\u786e\u4fdd config.yaml \u7684\u6587\u4ef6 owner \u4e3a actiontech-universe:actiontech")),(0,a.kt)("h2",{id:"\u542f\u52a8-sqle"},"\u542f\u52a8 SQLE"),(0,a.kt)("p",null,"SQLE \u8fdb\u7a0b\u901a\u8fc7 Systemd \u7ba1\u7406\u3002\u5728\u6210\u529f\u5b89\u88c5 RPM \u540e\uff0c\u6267\u884c\u542f\u52a8\u547d\u4ee4\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-sh"},"cd /opt/sqle\nchmod +x scripts/init_start.sh\n./scripts/init_start.sh\n")),(0,a.kt)("h2",{id:"\u8bbf\u95eesqle"},"\u8bbf\u95eeSQLE"),(0,a.kt)("p",null,"SQLE \u5bf9\u5916\u63d0\u4f9b web \u670d\u52a1\uff0c\u5728\u7a0b\u5e8f\u90e8\u7f72\u5b8c\u6210\u540e\uff0c\u5373\u53ef\u901a\u8fc7 SQLE UI \u8bbf\u95ee\uff1a",(0,a.kt)("a",{parentName:"p",href:"http://127.0.0.1:10000"},"http://127.0.0.1:10000"),", \u5730\u5740\u548c\u7aef\u53e3\u4e3a\u914d\u7f6e\u6587\u4ef6\u5185 dms.api \u914d\u7f6e\u9879\u3002"),(0,a.kt)("h2",{id:"\u542f\u52a8\u5931\u8d25\u95ee\u9898\u8bca\u65ad"},"\u542f\u52a8\u5931\u8d25\u95ee\u9898\u8bca\u65ad"),(0,a.kt)("p",null,"\u53c2\u8003\uff1a",(0,a.kt)("a",{parentName:"p",href:"https://github.com/actiontech/sqle/discussions/1239"},"https://github.com/actiontech/sqle/discussions/1239")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/597ed821.8e115d07.js b/assets/js/597ed821.8e115d07.js deleted file mode 100644 index 70fcdad1..00000000 --- a/assets/js/597ed821.8e115d07.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunksqle_docs=self.webpackChunksqle_docs||[]).push([[7843],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>f});var r=n(67294);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(l[n]=e[n]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}var i=r.createContext({}),p=function(e){var t=r.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},s=function(e){var t=p(e.components);return r.createElement(i.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,l=e.mdxType,a=e.originalType,i=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(n),d=l,f=u["".concat(i,".").concat(d)]||u[d]||m[d]||a;return n?r.createElement(f,o(o({ref:t},s),{},{components:n})):r.createElement(f,o({ref:t},s))}));function f(e,t){var n=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var a=n.length,o=new Array(a);o[0]=d;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c[u]="string"==typeof e?e:l,o[1]=c;for(var p=2;p{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>o,default:()=>u,frontMatter:()=>a,metadata:()=>c,toc:()=>p});var r=n(87462),l=(n(67294),n(3905));const a={title:"RPM \u5b89\u88c5"},o="RPM\u5b89\u88c5",c={unversionedId:"deploy-manual/rpm",id:"deploy-manual/rpm",title:"RPM \u5b89\u88c5",description:"\u73af\u5883\u51c6\u5907",source:"@site/docs/deploy-manual/rpm.md",sourceDirName:"deploy-manual",slug:"/deploy-manual/rpm",permalink:"/sqle-docs/docs/deploy-manual/rpm",draft:!1,editUrl:"https://github.com/actiontech/sqle-docs/tree/main/docs/deploy-manual/rpm.md",tags:[],version:"current",frontMatter:{title:"RPM \u5b89\u88c5"},sidebar:"tutorialSidebar",previous:{title:"\u6e90\u7801\u5b89\u88c5",permalink:"/sqle-docs/docs/deploy-manual/source"},next:{title:"Docker\u90e8\u7f72",permalink:"/sqle-docs/docs/deploy-manual/Docker"}},i={},p=[{value:"\u73af\u5883\u51c6\u5907",id:"\u73af\u5883\u51c6\u5907",level:2},{value:"\u4e0b\u8f7d\u5b89\u88c5\u5305",id:"\u4e0b\u8f7d\u5b89\u88c5\u5305",level:2},{value:"\u5b89\u88c5 SQLE",id:"\u5b89\u88c5-sqle",level:2},{value:"\u521b\u5efa\u6570\u636e\u5e93",id:"\u521b\u5efa\u6570\u636e\u5e93",level:2},{value:"\u4fee\u6539 SQLE \u914d\u7f6e\u6587\u4ef6",id:"\u4fee\u6539-sqle-\u914d\u7f6e\u6587\u4ef6",level:2},{value:"\u542f\u52a8 SQLE",id:"\u542f\u52a8-sqle",level:2},{value:"\u8bbf\u95eeSQLE",id:"\u8bbf\u95eesqle",level:2},{value:"\u542f\u52a8\u5931\u8d25\u95ee\u9898\u8bca\u65ad",id:"\u542f\u52a8\u5931\u8d25\u95ee\u9898\u8bca\u65ad",level:2}],s={toc:p};function u(e){let{components:t,...n}=e;return(0,l.kt)("wrapper",(0,r.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h1",{id:"rpm\u5b89\u88c5"},"RPM\u5b89\u88c5"),(0,l.kt)("h2",{id:"\u73af\u5883\u51c6\u5907"},"\u73af\u5883\u51c6\u5907"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"CentOS 7"),(0,l.kt)("li",{parentName:"ul"},"MySQL 5.7")),(0,l.kt)("h2",{id:"\u4e0b\u8f7d\u5b89\u88c5\u5305"},"\u4e0b\u8f7d\u5b89\u88c5\u5305"),(0,l.kt)("p",null,"\u4e0b\u8f7d SQLE \u7684 RPM \u5b89\u88c5\u5305\uff0c\u4e0b\u8f7d\u8fde\u63a5\u70b9\u51fb",(0,l.kt)("a",{parentName:"p",href:"https://github.com/actiontech/sqle/releases"},"\u8fd9\u91cc"),"\u3002"),(0,l.kt)("h2",{id:"\u5b89\u88c5-sqle"},"\u5b89\u88c5 SQLE"),(0,l.kt)("p",null,"\u6267\u884c RPM \u7684\u5b89\u88c5\u547d\u4ee4\uff1a"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-sh"},"rpm -ivh /path/to/sqle-ce-${version}.qa.el7.x86_64.rpm --prefix=/opt/sqle\n")),(0,l.kt)("h2",{id:"\u521b\u5efa\u6570\u636e\u5e93"},"\u521b\u5efa\u6570\u636e\u5e93"),(0,l.kt)("p",null,"\u51c6\u5907\u4e00\u53f0 MySQL5.7 \u4f5c\u4e3a SQLE \u7684\u540e\u7aef\u5b58\u50a8\u6570\u636e\u5e93\u3002\u6267\u884c\u4e0b\u9762\u547d\u4ee4\u521b\u5efa SQLE \u9700\u8981\u7684 schema\uff1a"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-sql"},"CREATE DATABASE IF NOT EXISTS sqle default character set utf8mb4 collate utf8mb4_unicode_ci;\nCREATE DATABASE IF NOT EXISTS dms default character set utf8mb4 collate utf8mb4_unicode_ci;\n")),(0,l.kt)("admonition",{type:"tip"},(0,l.kt)("p",{parentName:"admonition"},"\u521b\u5efa\u597d\u7684 Schema \u5c06\u5728\u4e0b\u9762\u4fee\u6539SQLE\u914d\u7f6e\u65f6\u4f7f\u7528\u5230\u3002")),(0,l.kt)("h2",{id:"\u4fee\u6539-sqle-\u914d\u7f6e\u6587\u4ef6"},"\u4fee\u6539 SQLE \u914d\u7f6e\u6587\u4ef6"),(0,l.kt)("p",null,"\u5b89\u88c5\u5b8c SQLE \u540e\uff0c\u9700\u8981\u6839\u636e\u5b9e\u9645\u60c5\u51b5\u4fee\u6539SQLE\u7684\u914d\u7f6e\uff0c\u53c2\u8003\uff1a",(0,l.kt)("a",{parentName:"p",href:"/sqle-docs/docs/deploy-manual/config"},"\u914d\u7f6e\u6587\u4ef6\u8bf4\u660e"),"\u3002SQLE\u5b89\u88c5\u5b8c\u6210\u540e\u63d0\u4f9b\u4e00\u4e2a\u914d\u7f6e\u6a21\u7248\u53ef\u76f4\u63a5\u4fee\u6539\u3002"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-sh"},"cd /opt/sqle/etc\nvim config.yml\n")),(0,l.kt)("admonition",{type:"tip"},(0,l.kt)("p",{parentName:"admonition"},"\u786e\u4fdd config.yaml \u7684\u6587\u4ef6 owner \u4e3a actiontech-universe:actiontech")),(0,l.kt)("h2",{id:"\u542f\u52a8-sqle"},"\u542f\u52a8 SQLE"),(0,l.kt)("p",null,"SQLE \u8fdb\u7a0b\u901a\u8fc7 Systemd \u7ba1\u7406\u3002\u5728\u6210\u529f\u5b89\u88c5 RPM \u540e\uff0c\u6267\u884c\u542f\u52a8\u547d\u4ee4\uff1a"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-sh"},"cd /opt/sqle\nchmod +x scripts/init_start.sh\n./scripts/init_start.sh\n")),(0,l.kt)("h2",{id:"\u8bbf\u95eesqle"},"\u8bbf\u95eeSQLE"),(0,l.kt)("p",null,"SQLE \u5bf9\u5916\u63d0\u4f9b web \u670d\u52a1\uff0c\u5728\u7a0b\u5e8f\u90e8\u7f72\u5b8c\u6210\u540e\uff0c\u5373\u53ef\u901a\u8fc7 SQLE UI \u8bbf\u95ee\uff1a",(0,l.kt)("a",{parentName:"p",href:"http://127.0.0.1:10000"},"http://127.0.0.1:10000"),", \u5730\u5740\u548c\u7aef\u53e3\u4e3a\u914d\u7f6e\u6587\u4ef6\u5185 dms.api \u914d\u7f6e\u9879\u3002"),(0,l.kt)("h2",{id:"\u542f\u52a8\u5931\u8d25\u95ee\u9898\u8bca\u65ad"},"\u542f\u52a8\u5931\u8d25\u95ee\u9898\u8bca\u65ad"),(0,l.kt)("p",null,"\u53c2\u8003\uff1a",(0,l.kt)("a",{parentName:"p",href:"https://github.com/actiontech/sqle/discussions/1239"},"https://github.com/actiontech/sqle/discussions/1239")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/adc46ca9.5d539ef1.js b/assets/js/adc46ca9.18715136.js similarity index 89% rename from assets/js/adc46ca9.5d539ef1.js rename to assets/js/adc46ca9.18715136.js index 7544b9dc..dd667a45 100644 --- a/assets/js/adc46ca9.5d539ef1.js +++ b/assets/js/adc46ca9.18715136.js @@ -1 +1 @@ -"use strict";(self.webpackChunksqle_docs=self.webpackChunksqle_docs||[]).push([[4748],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),p=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},s=function(e){var t=p(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,c=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),u=p(n),d=a,f=u["".concat(c,".").concat(d)]||u[d]||m[d]||l;return n?r.createElement(f,o(o({ref:t},s),{},{components:n})):r.createElement(f,o({ref:t},s))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,o=new Array(l);o[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[u]="string"==typeof e?e:a,o[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const l={title:"\u6570\u636e\u5e93\u5ba1\u6838\u63d2\u4ef6\u4f7f\u7528"},o=void 0,i={unversionedId:"dev-manual/plugins/howtouse",id:"dev-manual/plugins/howtouse",title:"\u6570\u636e\u5e93\u5ba1\u6838\u63d2\u4ef6\u4f7f\u7528",description:"\u914d\u7f6e\u63d2\u4ef6",source:"@site/docs/dev-manual/plugins/howtouse.md",sourceDirName:"dev-manual/plugins",slug:"/dev-manual/plugins/howtouse",permalink:"/sqle-docs/docs/dev-manual/plugins/howtouse",draft:!1,editUrl:"https://github.com/actiontech/sqle-docs/tree/main/docs/dev-manual/plugins/howtouse.md",tags:[],version:"current",frontMatter:{title:"\u6570\u636e\u5e93\u5ba1\u6838\u63d2\u4ef6\u4f7f\u7528"},sidebar:"tutorialSidebar",previous:{title:"\u529f\u80fd\u8bf4\u660e",permalink:"/sqle-docs/docs/dev-manual/plugins/intro"},next:{title:"\u6570\u636e\u5e93\u5ba1\u6838\u63d2\u4ef6\u5f00\u53d1",permalink:"/sqle-docs/docs/dev-manual/plugins/howtodev"}},c={},p=[{value:"\u914d\u7f6e\u63d2\u4ef6",id:"\u914d\u7f6e\u63d2\u4ef6",level:2},{value:"\u9009\u62e9\u9700\u8981\u542f\u7528\u7684\u6570\u636e\u6e90\u7c7b\u578b",id:"\u9009\u62e9\u9700\u8981\u542f\u7528\u7684\u6570\u636e\u6e90\u7c7b\u578b",level:3},{value:"\u5b8c\u6574\u64cd\u4f5c\u6d41\u7a0b\u53c2\u8003",id:"\u5b8c\u6574\u64cd\u4f5c\u6d41\u7a0b\u53c2\u8003",level:3},{value:"\u65b0\u589e\u63d2\u4ef6",id:"\u65b0\u589e\u63d2\u4ef6",level:2},{value:"\u5220\u9664\u63d2\u4ef6",id:"\u5220\u9664\u63d2\u4ef6",level:2}],s={toc:p};function u(e){let{components:t,...l}=e;return(0,a.kt)("wrapper",(0,r.Z)({},s,l,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"\u914d\u7f6e\u63d2\u4ef6"},"\u914d\u7f6e\u63d2\u4ef6"),(0,a.kt)("h3",{id:"\u9009\u62e9\u9700\u8981\u542f\u7528\u7684\u6570\u636e\u6e90\u7c7b\u578b"},"\u9009\u62e9\u9700\u8981\u542f\u7528\u7684\u6570\u636e\u6e90\u7c7b\u578b"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"\u8fdb\u5165SQLE\u76ee\u5f55\u4e0b\u7684scripts\u76ee\u5f55\uff0c\u6267\u884c\u63d2\u4ef6\u914d\u7f6e\u811a\u672c\uff1b"),(0,a.kt)("li",{parentName:"ol"},"\u8f93\u5165\u9700\u8981\u4f7f\u7528\u7684\u6570\u636e\u6e90\u63d2\u4ef6\u5e8f\u53f7\uff1b"),(0,a.kt)("li",{parentName:"ol"},"\u968f\u540e\uff0c\u811a\u672c\u5c06\u7ed3\u5408\u9009\u5b9a\u7684\u6570\u636e\u6e90\u63d2\u4ef6\u5e8f\u53f7\uff0c\u81ea\u52a8\u6267\u884c\u4ee5\u4e0b\u884c\u4e3a\uff1a",(0,a.kt)("ol",{parentName:"li"},(0,a.kt)("li",{parentName:"ol"},"\u6821\u9a8c\u5f53\u524d\u73af\u5883\u4fe1\u606f\u662f\u5426\u6ee1\u8db3\u63d2\u4ef6\u8fd0\u884c\u6761\u4ef6\uff0c\u5982java\u73af\u5883\u6821\u9a8c\u3001donet\u73af\u5883\u6821\u9a8c\uff1b"),(0,a.kt)("li",{parentName:"ol"},"\u73af\u5883\u6821\u9a8c\u6210\u529f\u540e\uff0c\u4fee\u6539\u63d2\u4ef6\u6267\u884c\u6743\u9650\uff0c\u5e76\u5c06\u672a\u542f\u7528\u7684\u63d2\u4ef6\u79fb\u9664\u5f53\u524d\u76ee\u5f55\uff1b"),(0,a.kt)("li",{parentName:"ol"},"\u4fee\u6539config.yaml\u6587\u4ef6\uff1b"))),(0,a.kt)("li",{parentName:"ol"},"\u914d\u7f6e\u5b8c\u6210\u540e\uff0c\u811a\u672c\u5c06\u542f\u52a8SQLE\u670d\u52a1\uff1b")),(0,a.kt)("h3",{id:"\u5b8c\u6574\u64cd\u4f5c\u6d41\u7a0b\u53c2\u8003"},"\u5b8c\u6574\u64cd\u4f5c\u6d41\u7a0b\u53c2\u8003"),(0,a.kt)("p",null,"\u6267\u884c\u811a\u672c\u8fd0\u884c\u547d\u4ee4\u5e76\u9009\u62e9\u6570\u636e\u6e90\u63d2\u4ef6\u5e8f\u53f7 ./init_config.sh\n",(0,a.kt)("img",{alt:"scripts",src:n(41149).Z,width:"1878",height:"872"}),"\n\u811a\u672c\u81ea\u52a8\u6267\u884c\u73af\u5883\u6821\u9a8c\n",(0,a.kt)("img",{alt:"check",src:n(81453).Z,width:"1232",height:"1462"}),"\n\u811a\u672c\u81ea\u52a8\u4fee\u6539\u76f8\u5173\u914d\u7f6e\u5e76\u542f\u52a8SQLE\n",(0,a.kt)("img",{alt:"config",src:n(96867).Z,width:"1234",height:"1292"})),(0,a.kt)("h2",{id:"\u65b0\u589e\u63d2\u4ef6"},"\u65b0\u589e\u63d2\u4ef6"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"\u8fdb\u5165SQLE\u76ee\u5f55\u4e0b\u7684scripts\u76ee\u5f55\uff0c\u6267\u884c\u63d2\u4ef6\u914d\u7f6e\u811a\u672c\uff1b"),(0,a.kt)("li",{parentName:"ol"},"\u8f93\u5165\u9700\u8981\u4f7f\u7528\u7684\u6570\u636e\u6e90\u63d2\u4ef6\u5e8f\u53f7\uff08\u6ce8\uff1a\u5df2\u542f\u7528\u7684\u6570\u636e\u6e90\u63d2\u4ef6\u9700\u8981\u4e5f\u9700\u8981\u586b\u5199\uff09\uff1b"),(0,a.kt)("li",{parentName:"ol"},"\u540e\u7eed\u64cd\u4f5c\u4e0e",(0,a.kt)("a",{parentName:"li",href:"#%E9%85%8D%E7%BD%AE%E6%8F%92%E4%BB%B6"},"\u914d\u7f6e\u63d2\u4ef6"),"\u4e00\u81f4\uff1b")),(0,a.kt)("h2",{id:"\u5220\u9664\u63d2\u4ef6"},"\u5220\u9664\u63d2\u4ef6"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"\u8fdb\u5165SQLE\u76ee\u5f55\u4e0b\u7684scripts\u76ee\u5f55\uff0c\u6267\u884c\u63d2\u4ef6\u914d\u7f6e\u811a\u672c\uff1b"),(0,a.kt)("li",{parentName:"ol"},"\u8f93\u5165\u9700\u8981\u4f7f\u7528\u7684\u6570\u636e\u6e90\u63d2\u4ef6\u5e8f\u53f7\uff0c\u4e0d\u518d\u586b\u5199\u9700\u8981\u5220\u9664\u7684\u6570\u636e\u6e90\u63d2\u4ef6\u5e8f\u53f7\uff1b"),(0,a.kt)("li",{parentName:"ol"},"\u540e\u7eed\u64cd\u4f5c\u4e0e",(0,a.kt)("a",{parentName:"li",href:"#%E9%85%8D%E7%BD%AE%E6%8F%92%E4%BB%B6"},"\u914d\u7f6e\u63d2\u4ef6"),"\u4e00\u81f4\uff1b")),(0,a.kt)("admonition",{type:"tip"},(0,a.kt)("ol",{parentName:"admonition"},(0,a.kt)("li",{parentName:"ol"},"\u9488\u5bf9Oracle\u548cDB2\u7c7b\u578b\u7684\u6570\u636e\u6e90\uff0c\u987b\u5148\u5728SQLE\u73af\u5883\u4e2d\u5b89\u88c5JDK\nyum install java-1.8.0-openjdk* -y"),(0,a.kt)("li",{parentName:"ol"},"\u9488\u5bf9Sql Server\u7c7b\u578b\u7684\u6570\u636e\u6e90\uff0c\u9700\u8981\u5b89\u88c5 .net 6.0 \u7248\u672c")),(0,a.kt)("ul",{parentName:"admonition"},(0,a.kt)("li",{parentName:"ul"},"unbuntu",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"apt-get install -y dotnet-sdk-6.0"))),(0,a.kt)("li",{parentName:"ul"},"centos",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"rpm -Uvh ",(0,a.kt)("a",{parentName:"li",href:"https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm"},"https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm")),(0,a.kt)("li",{parentName:"ul"},"yum install -y dotnet-runtime-6.0"),(0,a.kt)("li",{parentName:"ul"},"yum install -y aspnetcore-runtime-6.0"))))))}u.isMDXComponent=!0},96867:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/editconfig-9625201db9ad8292cb1e37b5e4df7cc3.png"},81453:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/environmentcheck-9f2cc78075b1f78bec5b9e58eebd1c16.png"},41149:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/scriptsexec-2ee02da1aeb508852faf11bec88c6e21.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunksqle_docs=self.webpackChunksqle_docs||[]).push([[4748],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),p=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},s=function(e){var t=p(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,c=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),u=p(n),d=a,f=u["".concat(c,".").concat(d)]||u[d]||m[d]||l;return n?r.createElement(f,o(o({ref:t},s),{},{components:n})):r.createElement(f,o({ref:t},s))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,o=new Array(l);o[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[u]="string"==typeof e?e:a,o[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const l={title:"\u6570\u636e\u5e93\u5ba1\u6838\u63d2\u4ef6\u4f7f\u7528"},o=void 0,i={unversionedId:"dev-manual/plugins/howtouse",id:"dev-manual/plugins/howtouse",title:"\u6570\u636e\u5e93\u5ba1\u6838\u63d2\u4ef6\u4f7f\u7528",description:"\u914d\u7f6e\u63d2\u4ef6",source:"@site/docs/dev-manual/plugins/howtouse.md",sourceDirName:"dev-manual/plugins",slug:"/dev-manual/plugins/howtouse",permalink:"/sqle-docs/docs/dev-manual/plugins/howtouse",draft:!1,editUrl:"https://github.com/actiontech/sqle-docs/tree/main/docs/dev-manual/plugins/howtouse.md",tags:[],version:"current",frontMatter:{title:"\u6570\u636e\u5e93\u5ba1\u6838\u63d2\u4ef6\u4f7f\u7528"},sidebar:"tutorialSidebar",previous:{title:"\u529f\u80fd\u8bf4\u660e",permalink:"/sqle-docs/docs/dev-manual/plugins/intro"},next:{title:"\u6570\u636e\u5e93\u5ba1\u6838\u63d2\u4ef6\u5f00\u53d1",permalink:"/sqle-docs/docs/dev-manual/plugins/howtodev"}},c={},p=[{value:"\u914d\u7f6e\u63d2\u4ef6",id:"\u914d\u7f6e\u63d2\u4ef6",level:2},{value:"\u9009\u62e9\u9700\u8981\u542f\u7528\u7684\u6570\u636e\u6e90\u7c7b\u578b",id:"\u9009\u62e9\u9700\u8981\u542f\u7528\u7684\u6570\u636e\u6e90\u7c7b\u578b",level:3},{value:"\u5b8c\u6574\u64cd\u4f5c\u6d41\u7a0b\u53c2\u8003",id:"\u5b8c\u6574\u64cd\u4f5c\u6d41\u7a0b\u53c2\u8003",level:3},{value:"\u65b0\u589e\u63d2\u4ef6",id:"\u65b0\u589e\u63d2\u4ef6",level:2},{value:"\u5220\u9664\u63d2\u4ef6",id:"\u5220\u9664\u63d2\u4ef6",level:2}],s={toc:p};function u(e){let{components:t,...l}=e;return(0,a.kt)("wrapper",(0,r.Z)({},s,l,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"\u914d\u7f6e\u63d2\u4ef6"},"\u914d\u7f6e\u63d2\u4ef6"),(0,a.kt)("h3",{id:"\u9009\u62e9\u9700\u8981\u542f\u7528\u7684\u6570\u636e\u6e90\u7c7b\u578b"},"\u9009\u62e9\u9700\u8981\u542f\u7528\u7684\u6570\u636e\u6e90\u7c7b\u578b"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"\u8fdb\u5165SQLE\u76ee\u5f55\u4e0b\u7684scripts\u76ee\u5f55\uff0c\u6267\u884c\u63d2\u4ef6\u914d\u7f6e\u811a\u672c\uff1b"),(0,a.kt)("li",{parentName:"ol"},"\u8f93\u5165\u9700\u8981\u4f7f\u7528\u7684\u6570\u636e\u6e90\u63d2\u4ef6\u5e8f\u53f7\uff1b"),(0,a.kt)("li",{parentName:"ol"},"\u968f\u540e\uff0c\u811a\u672c\u5c06\u7ed3\u5408\u9009\u5b9a\u7684\u6570\u636e\u6e90\u63d2\u4ef6\u5e8f\u53f7\uff0c\u81ea\u52a8\u6267\u884c\u4ee5\u4e0b\u884c\u4e3a\uff1a",(0,a.kt)("ol",{parentName:"li"},(0,a.kt)("li",{parentName:"ol"},"\u6821\u9a8c\u5f53\u524d\u73af\u5883\u4fe1\u606f\u662f\u5426\u6ee1\u8db3\u63d2\u4ef6\u8fd0\u884c\u6761\u4ef6\uff0c\u5982java\u73af\u5883\u6821\u9a8c\u3001donet\u73af\u5883\u6821\u9a8c\uff1b"),(0,a.kt)("li",{parentName:"ol"},"\u73af\u5883\u6821\u9a8c\u6210\u529f\u540e\uff0c\u4fee\u6539\u63d2\u4ef6\u6267\u884c\u6743\u9650\uff0c\u5e76\u5c06\u672a\u542f\u7528\u7684\u63d2\u4ef6\u79fb\u9664\u5f53\u524d\u76ee\u5f55\uff1b"),(0,a.kt)("li",{parentName:"ol"},"\u4fee\u6539config.yaml\u6587\u4ef6\uff1b"))),(0,a.kt)("li",{parentName:"ol"},"\u914d\u7f6e\u5b8c\u6210\u540e\uff0c\u811a\u672c\u5c06\u542f\u52a8SQLE\u670d\u52a1\uff1b")),(0,a.kt)("h3",{id:"\u5b8c\u6574\u64cd\u4f5c\u6d41\u7a0b\u53c2\u8003"},"\u5b8c\u6574\u64cd\u4f5c\u6d41\u7a0b\u53c2\u8003"),(0,a.kt)("p",null,"\u6267\u884c\u811a\u672c\u8fd0\u884c\u547d\u4ee4\u5e76\u9009\u62e9\u6570\u636e\u6e90\u63d2\u4ef6\u5e8f\u53f7 ./init_config.sh\n",(0,a.kt)("img",{alt:"scripts",src:n(41149).Z,width:"1878",height:"872"}),"\n\u811a\u672c\u81ea\u52a8\u6267\u884c\u73af\u5883\u6821\u9a8c\n",(0,a.kt)("img",{alt:"check",src:n(81453).Z,width:"1232",height:"1462"}),"\n\u811a\u672c\u81ea\u52a8\u4fee\u6539\u76f8\u5173\u914d\u7f6e\u5e76\u542f\u52a8SQLE\n",(0,a.kt)("img",{alt:"config",src:n(96867).Z,width:"1234",height:"1292"})),(0,a.kt)("h2",{id:"\u65b0\u589e\u63d2\u4ef6"},"\u65b0\u589e\u63d2\u4ef6"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"\u8fdb\u5165SQLE\u76ee\u5f55\u4e0b\u7684scripts\u76ee\u5f55\uff0c\u6267\u884c\u63d2\u4ef6\u914d\u7f6e\u811a\u672c\uff1b"),(0,a.kt)("li",{parentName:"ol"},"\u8f93\u5165\u9700\u8981\u4f7f\u7528\u7684\u6570\u636e\u6e90\u63d2\u4ef6\u5e8f\u53f7\uff08\u6ce8\uff1a\u5df2\u542f\u7528\u7684\u6570\u636e\u6e90\u63d2\u4ef6\u9700\u8981\u4e5f\u9700\u8981\u586b\u5199\uff09\uff1b"),(0,a.kt)("li",{parentName:"ol"},"\u540e\u7eed\u64cd\u4f5c\u4e0e",(0,a.kt)("a",{parentName:"li",href:"#%E9%85%8D%E7%BD%AE%E6%8F%92%E4%BB%B6"},"\u914d\u7f6e\u63d2\u4ef6"),"\u4e00\u81f4\uff1b")),(0,a.kt)("h2",{id:"\u5220\u9664\u63d2\u4ef6"},"\u5220\u9664\u63d2\u4ef6"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"\u8fdb\u5165SQLE\u76ee\u5f55\u4e0b\u7684scripts\u76ee\u5f55\uff0c\u6267\u884c\u63d2\u4ef6\u914d\u7f6e\u811a\u672c\uff1b"),(0,a.kt)("li",{parentName:"ol"},"\u8f93\u5165\u9700\u8981\u4f7f\u7528\u7684\u6570\u636e\u6e90\u63d2\u4ef6\u5e8f\u53f7\uff0c\u4e0d\u518d\u586b\u5199\u9700\u8981\u5220\u9664\u7684\u6570\u636e\u6e90\u63d2\u4ef6\u5e8f\u53f7\uff1b"),(0,a.kt)("li",{parentName:"ol"},"\u540e\u7eed\u64cd\u4f5c\u4e0e",(0,a.kt)("a",{parentName:"li",href:"#%E9%85%8D%E7%BD%AE%E6%8F%92%E4%BB%B6"},"\u914d\u7f6e\u63d2\u4ef6"),"\u4e00\u81f4\uff1b")),(0,a.kt)("admonition",{type:"tip"},(0,a.kt)("ol",{parentName:"admonition"},(0,a.kt)("li",{parentName:"ol"},"\u9488\u5bf9Oracle\u548cDB2\u7c7b\u578b\u7684\u6570\u636e\u6e90\uff0c\u987b\u5148\u5728SQLE\u73af\u5883\u4e2d\u5b89\u88c5JDK\nyum install java-1.8.0-openjdk* -y"),(0,a.kt)("li",{parentName:"ol"},"\u9488\u5bf9Sql Server\u7c7b\u578b\u7684\u6570\u636e\u6e90\uff0c\u9700\u8981\u5b89\u88c5 .net 6.0 \u7248\u672c")),(0,a.kt)("ul",{parentName:"admonition"},(0,a.kt)("li",{parentName:"ul"},"ubuntu",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"apt-get install -y dotnet-sdk-6.0"))),(0,a.kt)("li",{parentName:"ul"},"centos",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"rpm -Uvh ",(0,a.kt)("a",{parentName:"li",href:"https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm"},"https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm")),(0,a.kt)("li",{parentName:"ul"},"yum install -y dotnet-runtime-6.0"),(0,a.kt)("li",{parentName:"ul"},"yum install -y aspnetcore-runtime-6.0"))))))}u.isMDXComponent=!0},96867:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/editconfig-9625201db9ad8292cb1e37b5e4df7cc3.png"},81453:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/environmentcheck-9f2cc78075b1f78bec5b9e58eebd1c16.png"},41149:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/scriptsexec-2ee02da1aeb508852faf11bec88c6e21.png"}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.2eb8554c.js b/assets/js/runtime~main.fcc73122.js similarity index 84% rename from assets/js/runtime~main.2eb8554c.js rename to assets/js/runtime~main.fcc73122.js index a44774c0..a3a81aee 100644 --- a/assets/js/runtime~main.2eb8554c.js +++ b/assets/js/runtime~main.fcc73122.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,d,f,c,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var d=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(d.exports,d,d.exports,r),d.loaded=!0,d.exports}r.m=b,r.c=t,e=[],r.O=(a,d,f,c)=>{if(!d){var b=1/0;for(i=0;i=c)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(t=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[d,f,c]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var c=Object.create(null);r.r(c);var b={};a=a||[null,d({}),d([]),d(d)];for(var t=2&f&&e;"object"==typeof t&&!~a.indexOf(t);t=d(t))Object.getOwnPropertyNames(t).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,r.d(c,b),c},r.d=(e,a)=>{for(var d in a)r.o(a,d)&&!r.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,d)=>(r.f[d](e,a),a)),[])),r.u=e=>"assets/js/"+({53:"935f2afb",125:"7f1bbce8",150:"75c63229",203:"01d09168",238:"ba4b70c6",258:"39a60e89",269:"a1c7e5e9",287:"d8c191fb",341:"0ebb3f5b",374:"e36cd5bd",411:"cbc434de",555:"642bfdc0",570:"2325fbab",611:"72e02e69",634:"ef0f38b4",639:"bec63ed4",685:"2bd126e0",791:"e664c7ae",805:"fda8954d",806:"09f34579",901:"2e11ecab",1003:"19e0803c",1005:"249f7d1b",1190:"b9ae17d7",1391:"02c90ec4",1530:"f02fac34",1566:"0280f80a",1693:"33ad9be9",1731:"9a6145b1",1756:"de5421af",1775:"e6153409",1867:"dd6b5b85",2026:"3b566c5e",2056:"af879694",2082:"86820dd7",2234:"e6bffb5f",2395:"fbc01eff",2443:"524f0400",2564:"1505bef6",2595:"b1c5bb80",2608:"3d86b39a",2685:"9d5f5645",2770:"8be1495b",2781:"114c1ff0",2805:"4bc52cc2",2829:"3e324e54",2851:"91ed4a47",2963:"c563ac15",3022:"2d8e184c",3041:"f87aba91",3043:"a9fc8a51",3085:"1f391b9e",3237:"1df93b7f",3277:"8310fe8a",3296:"a71e30d2",3506:"6017ddd6",3528:"2e058920",3574:"40e013e2",3707:"cac012ec",3745:"5f5f0e81",3873:"e27cd41e",3979:"996e247a",4023:"b665e48e",4090:"2f44db8a",4122:"69aad86d",4187:"7570e0f0",4321:"f3a25e2d",4390:"39eca13b",4405:"183c7aa1",4462:"5b2d17d4",4663:"9d69580c",4664:"dfc44cf0",4701:"f2e73173",4717:"0311b912",4748:"adc46ca9",4753:"e6a5c99d",4806:"cb7518d4",5040:"bb6e8f67",5098:"caf71071",5105:"05d7652c",5131:"75dae98d",5194:"ded4d786",5336:"3a09a690",5426:"c50f615e",5427:"1c5076b2",5606:"288bea33",5608:"fd06722e",5635:"6f205e26",5795:"cd76f017",5883:"cdbed8c2",5962:"47c91765",5989:"82d13ca9",6015:"7f697b4f",6023:"fb3f0baf",6076:"e2f22478",6140:"c076d76c",6143:"9f9041d4",6515:"6508b26c",6540:"a8e97085",6630:"a2548957",6660:"dec7d928",6730:"b97428b3",6785:"ec7ec2c8",6799:"d241ea8a",6869:"82ad92c6",6918:"6044f636",6963:"7d79a1d2",6981:"7dbab1fd",7033:"e831274c",7039:"a122856d",7225:"00b1e56a",7264:"2f54af3f",7281:"7eb65a46",7407:"b0c5a65d",7414:"393be207",7571:"f842788a",7622:"b47ecf00",7843:"597ed821",7918:"17896441",7920:"1a4e3797",7927:"264f5faa",7945:"dc1cb979",8102:"20b46364",8119:"81e444cd",8121:"846accde",8142:"646478a3",8157:"28125733",8271:"52660e4f",8294:"79c4cf48",8407:"77a4f982",8420:"5f86214a",8508:"a26b9836",8528:"5836c0c9",8538:"7dcde5ea",8599:"4179ad40",8686:"1bbd07b0",8690:"1185ed00",8703:"4f79a043",8756:"a8bb5334",8862:"fc4b6217",8924:"788e20e1",8952:"b47fb6cd",9031:"0ecef8a4",9093:"3628edc3",9145:"6757540d",9149:"d0ae6baa",9298:"d544b3ed",9346:"1c0d99bd",9514:"1be78505",9567:"a403ac1f",9671:"0e384e19",9687:"8fb2801c",9751:"9ff17efe",9956:"24a44ceb",9975:"d1255c8f",9988:"dc6ee667"}[e]||e)+"."+{53:"d8c4ef94",125:"f95be968",150:"6e3b5c96",203:"d3e4b0d1",238:"0a7e0c21",258:"791af5c7",269:"bd043d47",272:"b0e6542f",287:"9dc006ff",341:"83d35cb6",374:"1829eca9",411:"8eeb4705",555:"db463e2c",570:"c099748d",611:"bae15d63",634:"cf2e3a8d",639:"4abcbb06",685:"1524f705",791:"9abd2ec5",805:"5976b8bf",806:"d74732cf",901:"ce536fe6",1003:"ec242444",1005:"a99e6a94",1190:"dd7fa1a5",1391:"fdfd3e16",1426:"5a439e2c",1530:"fea4125d",1566:"5172e235",1693:"2750a55b",1731:"8eb9e5ec",1756:"7e5075d9",1775:"c72251ea",1867:"038e38d3",2026:"bf7b6871",2056:"bfafb73e",2082:"71608b2f",2234:"ce6a0aa1",2395:"6049a5c5",2443:"b340fe31",2564:"de39f8f5",2595:"7dde6b3c",2608:"e538165b",2685:"037d2be8",2770:"4bba70ea",2781:"72965459",2805:"52c32da5",2829:"fa0a6ff3",2851:"9940be0a",2963:"948ae5b3",3022:"1a9d0319",3041:"16ecb9bd",3043:"89f17f57",3085:"b21c3b6c",3237:"ea801b2a",3277:"323a8e82",3296:"cf793422",3506:"6fb6a1dd",3528:"27cc60ab",3574:"46caace5",3707:"1ef1ba94",3745:"88d2aca2",3873:"dfa96135",3979:"d2cde6a8",4023:"3e93974c",4090:"8fb61bb3",4122:"24b771ab",4187:"385cda4a",4321:"cf461641",4390:"d5b532f4",4405:"f3197373",4462:"7c36b7c4",4663:"940e0c08",4664:"94181538",4701:"cf86dc1c",4717:"839168b7",4748:"5d539ef1",4753:"2e75737f",4806:"6a5b7c45",4972:"720bde17",5040:"b924e86f",5098:"ff1e9be7",5105:"7d2e98a5",5131:"8d21415e",5194:"08998767",5336:"213b93e2",5426:"45a27f4e",5427:"57f11f07",5606:"615add3e",5608:"cb1c06a9",5635:"0acd5953",5795:"bf6ecf7c",5883:"c9e75f3f",5962:"b673f1e3",5989:"038c8256",6015:"37bb9d66",6023:"66a9a2a3",6076:"7a92f535",6140:"3b458ba3",6143:"b38b43af",6515:"371e47f3",6540:"c242e044",6630:"b0492b1b",6660:"b5176efb",6730:"01a7e0f4",6785:"641ffd13",6799:"b2085472",6869:"bb672e1c",6918:"7a837c98",6945:"635b87a8",6963:"d89efaeb",6981:"3425e545",7033:"c2db757d",7039:"301601e7",7225:"34511f5f",7264:"15aa06fd",7281:"d2720bec",7407:"2e60421d",7414:"57d8c31d",7571:"0d24c0d4",7622:"621f546f",7843:"8e115d07",7918:"93484de1",7920:"9f042022",7927:"3e0f3d25",7945:"14cbbd7d",8102:"c569e2cd",8119:"e6468173",8121:"40182dd0",8142:"84222535",8157:"a92cdd5a",8271:"48cc0ba1",8294:"eaa870cd",8407:"9fe3abd9",8420:"16e0a624",8508:"8977ea8f",8528:"51a64a88",8538:"70c9b7c9",8599:"f16a5cfa",8686:"d1c5ebf0",8690:"91cea7fa",8703:"056dc24b",8756:"252e55ec",8862:"c35833c8",8894:"e8716be2",8924:"639811a4",8952:"9d90eef6",9031:"708fb56a",9093:"e0f09df6",9145:"fb578f98",9149:"4c79a23f",9298:"37b93ef1",9346:"7f50ad7e",9514:"f128f530",9567:"2ebc9712",9671:"251c91bd",9687:"68a79daf",9751:"69b99411",9956:"d7e8a766",9975:"8b6b9e8c",9988:"5cdcf0e7"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},c="sqle-docs:",r.l=(e,a,d,b)=>{if(f[e])f[e].push(a);else{var t,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var c=f[e];if(delete f[e],t.parentNode&&t.parentNode.removeChild(t),c&&c.forEach((e=>e(d))),a)return a(d)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/sqle-docs/",r.gca=function(e){return e={17896441:"7918",28125733:"8157","935f2afb":"53","7f1bbce8":"125","75c63229":"150","01d09168":"203",ba4b70c6:"238","39a60e89":"258",a1c7e5e9:"269",d8c191fb:"287","0ebb3f5b":"341",e36cd5bd:"374",cbc434de:"411","642bfdc0":"555","2325fbab":"570","72e02e69":"611",ef0f38b4:"634",bec63ed4:"639","2bd126e0":"685",e664c7ae:"791",fda8954d:"805","09f34579":"806","2e11ecab":"901","19e0803c":"1003","249f7d1b":"1005",b9ae17d7:"1190","02c90ec4":"1391",f02fac34:"1530","0280f80a":"1566","33ad9be9":"1693","9a6145b1":"1731",de5421af:"1756",e6153409:"1775",dd6b5b85:"1867","3b566c5e":"2026",af879694:"2056","86820dd7":"2082",e6bffb5f:"2234",fbc01eff:"2395","524f0400":"2443","1505bef6":"2564",b1c5bb80:"2595","3d86b39a":"2608","9d5f5645":"2685","8be1495b":"2770","114c1ff0":"2781","4bc52cc2":"2805","3e324e54":"2829","91ed4a47":"2851",c563ac15:"2963","2d8e184c":"3022",f87aba91:"3041",a9fc8a51:"3043","1f391b9e":"3085","1df93b7f":"3237","8310fe8a":"3277",a71e30d2:"3296","6017ddd6":"3506","2e058920":"3528","40e013e2":"3574",cac012ec:"3707","5f5f0e81":"3745",e27cd41e:"3873","996e247a":"3979",b665e48e:"4023","2f44db8a":"4090","69aad86d":"4122","7570e0f0":"4187",f3a25e2d:"4321","39eca13b":"4390","183c7aa1":"4405","5b2d17d4":"4462","9d69580c":"4663",dfc44cf0:"4664",f2e73173:"4701","0311b912":"4717",adc46ca9:"4748",e6a5c99d:"4753",cb7518d4:"4806",bb6e8f67:"5040",caf71071:"5098","05d7652c":"5105","75dae98d":"5131",ded4d786:"5194","3a09a690":"5336",c50f615e:"5426","1c5076b2":"5427","288bea33":"5606",fd06722e:"5608","6f205e26":"5635",cd76f017:"5795",cdbed8c2:"5883","47c91765":"5962","82d13ca9":"5989","7f697b4f":"6015",fb3f0baf:"6023",e2f22478:"6076",c076d76c:"6140","9f9041d4":"6143","6508b26c":"6515",a8e97085:"6540",a2548957:"6630",dec7d928:"6660",b97428b3:"6730",ec7ec2c8:"6785",d241ea8a:"6799","82ad92c6":"6869","6044f636":"6918","7d79a1d2":"6963","7dbab1fd":"6981",e831274c:"7033",a122856d:"7039","00b1e56a":"7225","2f54af3f":"7264","7eb65a46":"7281",b0c5a65d:"7407","393be207":"7414",f842788a:"7571",b47ecf00:"7622","597ed821":"7843","1a4e3797":"7920","264f5faa":"7927",dc1cb979:"7945","20b46364":"8102","81e444cd":"8119","846accde":"8121","646478a3":"8142","52660e4f":"8271","79c4cf48":"8294","77a4f982":"8407","5f86214a":"8420",a26b9836:"8508","5836c0c9":"8528","7dcde5ea":"8538","4179ad40":"8599","1bbd07b0":"8686","1185ed00":"8690","4f79a043":"8703",a8bb5334:"8756",fc4b6217:"8862","788e20e1":"8924",b47fb6cd:"8952","0ecef8a4":"9031","3628edc3":"9093","6757540d":"9145",d0ae6baa:"9149",d544b3ed:"9298","1c0d99bd":"9346","1be78505":"9514",a403ac1f:"9567","0e384e19":"9671","8fb2801c":"9687","9ff17efe":"9751","24a44ceb":"9956",d1255c8f:"9975",dc6ee667:"9988"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(a,d)=>{var f=r.o(e,a)?e[a]:void 0;if(0!==f)if(f)d.push(f[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var c=new Promise(((d,c)=>f=e[a]=[d,c]));d.push(f[2]=c);var b=r.p+r.u(a),t=new Error;r.l(b,(d=>{if(r.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var c=d&&("load"===d.type?"missing":d.type),b=d&&d.target&&d.target.src;t.message="Loading chunk "+a+" failed.\n("+c+": "+b+")",t.name="ChunkLoadError",t.type=c,t.request=b,f[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,d)=>{var f,c,b=d[0],t=d[1],o=d[2],n=0;if(b.some((a=>0!==e[a]))){for(f in t)r.o(t,f)&&(r.m[f]=t[f]);if(o)var i=o(r)}for(a&&a(d);n{"use strict";var e,a,d,f,b,c={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var d=t[e]={id:e,loaded:!1,exports:{}};return c[e].call(d.exports,d,d.exports,r),d.loaded=!0,d.exports}r.m=c,r.c=t,e=[],r.O=(a,d,f,b)=>{if(!d){var c=1/0;for(i=0;i=b)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(t=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[d,f,b]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var b=Object.create(null);r.r(b);var c={};a=a||[null,d({}),d([]),d(d)];for(var t=2&f&&e;"object"==typeof t&&!~a.indexOf(t);t=d(t))Object.getOwnPropertyNames(t).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,r.d(b,c),b},r.d=(e,a)=>{for(var d in a)r.o(a,d)&&!r.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,d)=>(r.f[d](e,a),a)),[])),r.u=e=>"assets/js/"+({53:"935f2afb",125:"7f1bbce8",150:"75c63229",203:"01d09168",238:"ba4b70c6",258:"39a60e89",269:"a1c7e5e9",287:"d8c191fb",341:"0ebb3f5b",374:"e36cd5bd",411:"cbc434de",555:"642bfdc0",570:"2325fbab",611:"72e02e69",634:"ef0f38b4",639:"bec63ed4",685:"2bd126e0",791:"e664c7ae",805:"fda8954d",806:"09f34579",901:"2e11ecab",1003:"19e0803c",1005:"249f7d1b",1190:"b9ae17d7",1391:"02c90ec4",1530:"f02fac34",1566:"0280f80a",1693:"33ad9be9",1731:"9a6145b1",1756:"de5421af",1775:"e6153409",1867:"dd6b5b85",2026:"3b566c5e",2056:"af879694",2082:"86820dd7",2234:"e6bffb5f",2395:"fbc01eff",2443:"524f0400",2564:"1505bef6",2595:"b1c5bb80",2608:"3d86b39a",2685:"9d5f5645",2770:"8be1495b",2781:"114c1ff0",2805:"4bc52cc2",2829:"3e324e54",2851:"91ed4a47",2963:"c563ac15",3022:"2d8e184c",3041:"f87aba91",3043:"a9fc8a51",3085:"1f391b9e",3237:"1df93b7f",3277:"8310fe8a",3296:"a71e30d2",3506:"6017ddd6",3528:"2e058920",3574:"40e013e2",3707:"cac012ec",3745:"5f5f0e81",3873:"e27cd41e",3979:"996e247a",4023:"b665e48e",4090:"2f44db8a",4122:"69aad86d",4187:"7570e0f0",4321:"f3a25e2d",4390:"39eca13b",4405:"183c7aa1",4462:"5b2d17d4",4663:"9d69580c",4664:"dfc44cf0",4701:"f2e73173",4717:"0311b912",4748:"adc46ca9",4753:"e6a5c99d",4806:"cb7518d4",5040:"bb6e8f67",5098:"caf71071",5105:"05d7652c",5131:"75dae98d",5194:"ded4d786",5336:"3a09a690",5426:"c50f615e",5427:"1c5076b2",5606:"288bea33",5608:"fd06722e",5635:"6f205e26",5795:"cd76f017",5883:"cdbed8c2",5962:"47c91765",5989:"82d13ca9",6015:"7f697b4f",6023:"fb3f0baf",6076:"e2f22478",6140:"c076d76c",6143:"9f9041d4",6515:"6508b26c",6540:"a8e97085",6630:"a2548957",6660:"dec7d928",6730:"b97428b3",6785:"ec7ec2c8",6799:"d241ea8a",6869:"82ad92c6",6918:"6044f636",6963:"7d79a1d2",6981:"7dbab1fd",7033:"e831274c",7039:"a122856d",7225:"00b1e56a",7264:"2f54af3f",7281:"7eb65a46",7407:"b0c5a65d",7414:"393be207",7571:"f842788a",7622:"b47ecf00",7843:"597ed821",7918:"17896441",7920:"1a4e3797",7927:"264f5faa",7945:"dc1cb979",8102:"20b46364",8119:"81e444cd",8121:"846accde",8142:"646478a3",8157:"28125733",8271:"52660e4f",8294:"79c4cf48",8407:"77a4f982",8420:"5f86214a",8508:"a26b9836",8528:"5836c0c9",8538:"7dcde5ea",8599:"4179ad40",8686:"1bbd07b0",8690:"1185ed00",8703:"4f79a043",8756:"a8bb5334",8862:"fc4b6217",8924:"788e20e1",8952:"b47fb6cd",9031:"0ecef8a4",9093:"3628edc3",9145:"6757540d",9149:"d0ae6baa",9298:"d544b3ed",9346:"1c0d99bd",9514:"1be78505",9567:"a403ac1f",9671:"0e384e19",9687:"8fb2801c",9751:"9ff17efe",9956:"24a44ceb",9975:"d1255c8f",9988:"dc6ee667"}[e]||e)+"."+{53:"d8c4ef94",125:"f95be968",150:"6e3b5c96",203:"d3e4b0d1",238:"0a7e0c21",258:"791af5c7",269:"bd043d47",272:"b0e6542f",287:"9dc006ff",341:"83d35cb6",374:"1829eca9",411:"8eeb4705",555:"db463e2c",570:"c099748d",611:"bae15d63",634:"cf2e3a8d",639:"4abcbb06",685:"1524f705",791:"9abd2ec5",805:"5976b8bf",806:"d74732cf",901:"ce536fe6",1003:"ec242444",1005:"a99e6a94",1190:"dd7fa1a5",1391:"fdfd3e16",1426:"5a439e2c",1530:"fea4125d",1566:"5172e235",1693:"2750a55b",1731:"8eb9e5ec",1756:"7e5075d9",1775:"c72251ea",1867:"038e38d3",2026:"bf7b6871",2056:"bfafb73e",2082:"71608b2f",2234:"ce6a0aa1",2395:"6049a5c5",2443:"b340fe31",2564:"de39f8f5",2595:"7dde6b3c",2608:"e538165b",2685:"037d2be8",2770:"4bba70ea",2781:"72965459",2805:"52c32da5",2829:"fa0a6ff3",2851:"9940be0a",2963:"948ae5b3",3022:"1a9d0319",3041:"16ecb9bd",3043:"89f17f57",3085:"b21c3b6c",3237:"ea801b2a",3277:"323a8e82",3296:"cf793422",3506:"6fb6a1dd",3528:"27cc60ab",3574:"46caace5",3707:"1ef1ba94",3745:"88d2aca2",3873:"dfa96135",3979:"d2cde6a8",4023:"3e93974c",4090:"8fb61bb3",4122:"24b771ab",4187:"385cda4a",4321:"cf461641",4390:"d5b532f4",4405:"f3197373",4462:"7c36b7c4",4663:"940e0c08",4664:"94181538",4701:"cf86dc1c",4717:"839168b7",4748:"18715136",4753:"2e75737f",4806:"6a5b7c45",4972:"720bde17",5040:"b924e86f",5098:"ff1e9be7",5105:"7d2e98a5",5131:"8d21415e",5194:"08998767",5336:"213b93e2",5426:"45a27f4e",5427:"57f11f07",5606:"615add3e",5608:"cb1c06a9",5635:"0acd5953",5795:"bf6ecf7c",5883:"c9e75f3f",5962:"b673f1e3",5989:"038c8256",6015:"37bb9d66",6023:"66a9a2a3",6076:"7a92f535",6140:"3b458ba3",6143:"b38b43af",6515:"371e47f3",6540:"c242e044",6630:"b0492b1b",6660:"b5176efb",6730:"01a7e0f4",6785:"641ffd13",6799:"b2085472",6869:"bb672e1c",6918:"7a837c98",6945:"635b87a8",6963:"d89efaeb",6981:"3425e545",7033:"c2db757d",7039:"301601e7",7225:"34511f5f",7264:"15aa06fd",7281:"d2720bec",7407:"2e60421d",7414:"57d8c31d",7571:"0d24c0d4",7622:"621f546f",7843:"4a155155",7918:"93484de1",7920:"9f042022",7927:"3e0f3d25",7945:"14cbbd7d",8102:"c569e2cd",8119:"e6468173",8121:"40182dd0",8142:"84222535",8157:"a92cdd5a",8271:"48cc0ba1",8294:"eaa870cd",8407:"9fe3abd9",8420:"16e0a624",8508:"8977ea8f",8528:"51a64a88",8538:"70c9b7c9",8599:"f16a5cfa",8686:"d1c5ebf0",8690:"91cea7fa",8703:"056dc24b",8756:"252e55ec",8862:"c35833c8",8894:"e8716be2",8924:"639811a4",8952:"9d90eef6",9031:"708fb56a",9093:"e0f09df6",9145:"fb578f98",9149:"4c79a23f",9298:"37b93ef1",9346:"7f50ad7e",9514:"f128f530",9567:"2ebc9712",9671:"251c91bd",9687:"68a79daf",9751:"69b99411",9956:"d7e8a766",9975:"8b6b9e8c",9988:"5cdcf0e7"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},b="sqle-docs:",r.l=(e,a,d,c)=>{if(f[e])f[e].push(a);else{var t,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var b=f[e];if(delete f[e],t.parentNode&&t.parentNode.removeChild(t),b&&b.forEach((e=>e(d))),a)return a(d)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/sqle-docs/",r.gca=function(e){return e={17896441:"7918",28125733:"8157","935f2afb":"53","7f1bbce8":"125","75c63229":"150","01d09168":"203",ba4b70c6:"238","39a60e89":"258",a1c7e5e9:"269",d8c191fb:"287","0ebb3f5b":"341",e36cd5bd:"374",cbc434de:"411","642bfdc0":"555","2325fbab":"570","72e02e69":"611",ef0f38b4:"634",bec63ed4:"639","2bd126e0":"685",e664c7ae:"791",fda8954d:"805","09f34579":"806","2e11ecab":"901","19e0803c":"1003","249f7d1b":"1005",b9ae17d7:"1190","02c90ec4":"1391",f02fac34:"1530","0280f80a":"1566","33ad9be9":"1693","9a6145b1":"1731",de5421af:"1756",e6153409:"1775",dd6b5b85:"1867","3b566c5e":"2026",af879694:"2056","86820dd7":"2082",e6bffb5f:"2234",fbc01eff:"2395","524f0400":"2443","1505bef6":"2564",b1c5bb80:"2595","3d86b39a":"2608","9d5f5645":"2685","8be1495b":"2770","114c1ff0":"2781","4bc52cc2":"2805","3e324e54":"2829","91ed4a47":"2851",c563ac15:"2963","2d8e184c":"3022",f87aba91:"3041",a9fc8a51:"3043","1f391b9e":"3085","1df93b7f":"3237","8310fe8a":"3277",a71e30d2:"3296","6017ddd6":"3506","2e058920":"3528","40e013e2":"3574",cac012ec:"3707","5f5f0e81":"3745",e27cd41e:"3873","996e247a":"3979",b665e48e:"4023","2f44db8a":"4090","69aad86d":"4122","7570e0f0":"4187",f3a25e2d:"4321","39eca13b":"4390","183c7aa1":"4405","5b2d17d4":"4462","9d69580c":"4663",dfc44cf0:"4664",f2e73173:"4701","0311b912":"4717",adc46ca9:"4748",e6a5c99d:"4753",cb7518d4:"4806",bb6e8f67:"5040",caf71071:"5098","05d7652c":"5105","75dae98d":"5131",ded4d786:"5194","3a09a690":"5336",c50f615e:"5426","1c5076b2":"5427","288bea33":"5606",fd06722e:"5608","6f205e26":"5635",cd76f017:"5795",cdbed8c2:"5883","47c91765":"5962","82d13ca9":"5989","7f697b4f":"6015",fb3f0baf:"6023",e2f22478:"6076",c076d76c:"6140","9f9041d4":"6143","6508b26c":"6515",a8e97085:"6540",a2548957:"6630",dec7d928:"6660",b97428b3:"6730",ec7ec2c8:"6785",d241ea8a:"6799","82ad92c6":"6869","6044f636":"6918","7d79a1d2":"6963","7dbab1fd":"6981",e831274c:"7033",a122856d:"7039","00b1e56a":"7225","2f54af3f":"7264","7eb65a46":"7281",b0c5a65d:"7407","393be207":"7414",f842788a:"7571",b47ecf00:"7622","597ed821":"7843","1a4e3797":"7920","264f5faa":"7927",dc1cb979:"7945","20b46364":"8102","81e444cd":"8119","846accde":"8121","646478a3":"8142","52660e4f":"8271","79c4cf48":"8294","77a4f982":"8407","5f86214a":"8420",a26b9836:"8508","5836c0c9":"8528","7dcde5ea":"8538","4179ad40":"8599","1bbd07b0":"8686","1185ed00":"8690","4f79a043":"8703",a8bb5334:"8756",fc4b6217:"8862","788e20e1":"8924",b47fb6cd:"8952","0ecef8a4":"9031","3628edc3":"9093","6757540d":"9145",d0ae6baa:"9149",d544b3ed:"9298","1c0d99bd":"9346","1be78505":"9514",a403ac1f:"9567","0e384e19":"9671","8fb2801c":"9687","9ff17efe":"9751","24a44ceb":"9956",d1255c8f:"9975",dc6ee667:"9988"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(a,d)=>{var f=r.o(e,a)?e[a]:void 0;if(0!==f)if(f)d.push(f[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var b=new Promise(((d,b)=>f=e[a]=[d,b]));d.push(f[2]=b);var c=r.p+r.u(a),t=new Error;r.l(c,(d=>{if(r.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var b=d&&("load"===d.type?"missing":d.type),c=d&&d.target&&d.target.src;t.message="Loading chunk "+a+" failed.\n("+b+": "+c+")",t.name="ChunkLoadError",t.type=b,t.request=c,f[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,d)=>{var f,b,c=d[0],t=d[1],o=d[2],n=0;if(c.some((a=>0!==e[a]))){for(f in t)r.o(t,f)&&(r.m[f]=t[f]);if(o)var i=o(r)}for(a&&a(d);n FAQ | SQLE 文档 - + - + \ No newline at end of file diff --git a/docs/FAQ/mirror/index.html b/docs/FAQ/mirror/index.html index 05972167..ec9a9c47 100644 --- a/docs/FAQ/mirror/index.html +++ b/docs/FAQ/mirror/index.html @@ -4,13 +4,13 @@ 镜像仓库推荐 | SQLE 文档 - + - + \ No newline at end of file diff --git a/docs/FAQ/rollback/index.html b/docs/FAQ/rollback/index.html index 20d4f1b1..14238124 100644 --- a/docs/FAQ/rollback/index.html +++ b/docs/FAQ/rollback/index.html @@ -4,13 +4,13 @@ SQL回滚支持程度 | SQLE 文档 - + - + \ No newline at end of file diff --git a/docs/FAQ/whichdatabase/index.html b/docs/FAQ/whichdatabase/index.html index 14e0b951..1c9e47d4 100644 --- a/docs/FAQ/whichdatabase/index.html +++ b/docs/FAQ/whichdatabase/index.html @@ -4,13 +4,13 @@ 支持哪些数据库 | SQLE 文档 - +
版本:v3

支持的数据库及版本

数据库类型验证可用的版本
MySQL5.7.25 、8.0.33
PostgreSQL9.3 – 13
Oracle11.2、12.1、12.2
SQL Server2008、2012、2016
DB211.5
TiDB4.0.8
OceanBase For MySQL3.5
OceanBase For Oracle4.1
TDSQL For InnoDB
Mycat
达梦V8
提示

当前版本为SQLE验证确认可用的版本,若需要使用其他版本,需自行验证

- + \ No newline at end of file diff --git a/docs/SUMMARY/index.html b/docs/SUMMARY/index.html index 3130e3c5..f0cd9517 100644 --- a/docs/SUMMARY/index.html +++ b/docs/SUMMARY/index.html @@ -4,13 +4,13 @@ Summary | SQLE 文档 - + - + \ No newline at end of file diff --git a/docs/deploy-manual/Docker/index.html b/docs/deploy-manual/Docker/index.html index 67ebe313..8e454806 100644 --- a/docs/deploy-manual/Docker/index.html +++ b/docs/deploy-manual/Docker/index.html @@ -4,13 +4,13 @@ Docker部署 | SQLE 文档 - +
版本:v3

Docker部署

Docker hub 地址

actiontech/sqle-ce

提示

推荐配置国内镜像源,参考镜像推荐

Docker 参考命令

docker run -d -it \
--name sqle-server \
-p 10000:10000 \
-p 10001:10001 \
-e MYSQL_HOST="10.10.10.10" \
-e MYSQL_PORT=3306 \
-e MYSQL_USER="root" \
-e MYSQL_PASSWORD="123456" \
-e MYSQL_DMS_SCHEMA="dms" \
-e MYSQL_SQLE_SCHEMA="sqle" \
actiontech/sqle-ce:latest
提示

默认提供最新版本的下载镜像,如果需要使用其他版本的镜像,可以访问SQLE的DockerHub选用想要的版本。

参数说明

使用环境变量传递参数,这些指定的配置会映射到 /opt/sqle/etc/config.yaml 配置内,指定数据库的配置等。

变量说明
MYSQL_HOST访问地址
MYSQL_PORT访问端口
MYSQL_USER数据库用户
MYSQL_PASSWORD数据库密码
MYSQL_DMS_SCHEMADMS 服务使用的指定的 schema
MYSQL_SQLE_SCHEMASQLE 服务使用的指定的 schema
DEBUG是否输出 debug 日志,默认为false
AUTO_MIGRATE_TABLE是否自动创建表格和初始化数据,默认为true

注意点

提示

使用 docker 命令运行容器需要提前准备 MySQL 服务并且创建对应的数据库 schema,创建数据库的SQL可参考:RPM 部署

提示

如果 SQLE 容器启动失败可以使用docker logs sqle-server查看启用日志,其中sqle-server是容器名称。

- + \ No newline at end of file diff --git a/docs/deploy-manual/DockerCompose/index.html b/docs/deploy-manual/DockerCompose/index.html index 41ba7c8c..8334c90d 100644 --- a/docs/deploy-manual/DockerCompose/index.html +++ b/docs/deploy-manual/DockerCompose/index.html @@ -4,13 +4,13 @@ Docker Compose 部署 | SQLE 文档 - +
版本:v3

Docker Compose 部署

配置文件

下载地址:docker-compose.yaml

下载地址:init

使用方法

将 docker-compose.yaml 文件和init 文件夹下载到本地目录,并进入目录内,通过环境变量SQLE_IMAGE指定不同版本的 SQLE 镜像,默认是 latest

SQLE_IMAGE=actiontech/sqle-ce:latest docker-compose up -d
- + \ No newline at end of file diff --git a/docs/deploy-manual/config/index.html b/docs/deploy-manual/config/index.html index 44dae679..e6625320 100644 --- a/docs/deploy-manual/config/index.html +++ b/docs/deploy-manual/config/index.html @@ -4,13 +4,13 @@ 配置文件说明 | SQLE 文档 - +
版本:v3

配置文件说明

提示

SQLE的配置文件采用yaml的格式,默认情况下位于SQLE安装目录下,路径为./etc/config.yaml

默认文件参考

dms:
id: 1
api:
addr: "0.0.0.0"
port: 10000
enable_https: false
cert_file_path: './etc/cert.pem'
key_file_path: './etc/key.pem'
secret_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
service:
database:
host: "127.0.0.1" # 请修改为实际监听的IP
port: 3306 # 请修改为实际监听的端口
username: "root" # 请修改为实际连接信息
password: "123456" # 请修改为实际连接信息
database: "dms"
debug: true
auto_migrate: true
log:
level: DEBUG
path: logs
max_size_mb: 100
max_backup_number: 10
cloudbeaver:
enable_https: false
host: "127.0.0.1"
port: 8978
admin_user: "cbadmin"
admin_password: "123456"
database_driver_options:
- db_type: MySQL
logo_path: "/logo/mysql.png"
params:
- db_type: PostgreSQL
logo_path: "/static/logo/pg.png"
params:
- db_type: Oracle
logo_path: "/static/logo/oracle.png"
params: [
{
"key":"service_name",
"value":"XE",
"desc":"service name",
"type":"string"
},
]
sqle:
id: 1
dms_server_address: "http://127.0.0.1:10000"
api:
addr: "127.0.0.1"
port: 10001
enable_https: false
cert_file_path: './etc/cert.pem'
key_file_path: './etc/key.pem'
secret_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
service:
auto_migrate_table: true
debug_log: false
log_path: './logs'
log_max_size_mb: 1024
log_max_backup_number: 2
plugin_path: './plugins'
database:
mysql_host: '127.0.0.1' # 请修改为实际监听的IP
mysql_port: 3306 # 请修改为实际监听的端口
mysql_user: 'root' # 请修改为实际连接信息
mysql_password: '123456' # 请修改为实际连接信息
mysql_schema: 'sqle'

配置说明

通用配置

参数说明
idserver id,辨识集群节点,集群内不重复即可
api当前服务的web接口参数
secret_key全局AES加密秘钥,影响登录和用户密码等的存储;生产环境建议配置该值替换掉程序默认值,不然会存在安全风险;格式是32位随机字符串

通用配置.api

参数说明
addr访问服务器时需要的网络地址
port当前服务的web接口参数
enable_https是否开启https,默认不开启
cert_file_pathhttps 证书路径
key_file_pathhttps 私钥路径

DMS 配置

参数说明
id通用配置
api通用配置
secret_key通用配置
service服务
cloudbeaverSQL工作台

DMS.service.database

参数说明
hostDMS 后端数据库地址
portDMS 后端数据库地址
usernameDMS 后端数据库用户
passwordDMS 后端数据库密码
databaseDMS 后端数据库 schema
debug

DMS.service.log

参数说明
levelDMS日志级别
pathDMS日志存在路径
max_size_mbDMS日志文件大小
max_backup_numberDMS保留日志文件数

DMS.cloudbeaver

SQL工作台的配置,配置则代表开启SQL工作台。

参数说明
enable_https是否是https连接
hostcloudbeaver 地址
portcloudbeaver 端口
admin_usercloudbeaver 超级管理员名称
admin_passwordcloudbeaver 超级管理员密码

SQLE 配置

参数说明
id通用配置
api通用配置
secret_key通用配置
service服务

SQLE.service

参数说明
auto_migrate_table自动创建表结构,初始化数据
debug_log开启debug模式,打印更多日志,会打印业务SQL,开发环境可开启
log_path日志目录
log_max_size_mb单个日志文件最大大小,单位MB
log_max_backup_number日志文件最大备份数量
plugin_pathSQL审核插件的加载地址

SQLE.service.database

参数说明
mysql_hostSQLE存储库的地址
mysql_portSQLE存储库的端口
mysql_userSQLE存储库的数据库用户
mysql_passwordSQLE存储库的数据库密码
mysql_schemaSQLE存储库的数据库 schema

数据库插件配置请参考:如何配置数据库审核插件

- + \ No newline at end of file diff --git a/docs/deploy-manual/intro/index.html b/docs/deploy-manual/intro/index.html index 442acc50..5ef8629d 100644 --- a/docs/deploy-manual/intro/index.html +++ b/docs/deploy-manual/intro/index.html @@ -4,13 +4,13 @@ 安装说明 | SQLE 文档 - +
版本:v3

安装说明

SQLE 提供了多种安装部署的方式,用户可以结合自己的环境和现状选择。初次体验或者测试使用的话建议使用docker-compose 或 docker 快速部署。

安装方式

  1. 源码安装
  2. RPM 部署
  3. Docker 部署
  4. Docker Compsoe 部署

如何访问

SQLE 对外提供 web 服务,在程序部署完成后,即可通过 SQLE UI 访问:http://127.0.0.1:10000, 地址和端口为配置文件内 dms.api 配置项。

提示

ps:ip 和端口请根据前面的配置自行替换,默认端口是10000。

初始用户

  • 用户名:admin
  • 密码:admin
- + \ No newline at end of file diff --git a/docs/deploy-manual/rpm/index.html b/docs/deploy-manual/rpm/index.html index 662eaa1f..071b84e7 100644 --- a/docs/deploy-manual/rpm/index.html +++ b/docs/deploy-manual/rpm/index.html @@ -4,13 +4,13 @@ RPM 安装 | SQLE 文档 - +
-
版本:v3

RPM安装

环境准备

  • CentOS 7
  • MySQL 5.7

下载安装包

下载 SQLE 的 RPM 安装包,下载连接点击这里

安装 SQLE

执行 RPM 的安装命令:

rpm -ivh /path/to/sqle-ce-${version}.qa.el7.x86_64.rpm --prefix=/opt/sqle

创建数据库

准备一台 MySQL5.7 作为 SQLE 的后端存储数据库。执行下面命令创建 SQLE 需要的 schema:

CREATE DATABASE IF NOT EXISTS sqle default character set utf8mb4 collate utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS dms default character set utf8mb4 collate utf8mb4_unicode_ci;
提示

创建好的 Schema 将在下面修改SQLE配置时使用到。

修改 SQLE 配置文件

安装完 SQLE 后,需要根据实际情况修改SQLE的配置,参考:配置文件说明。SQLE安装完成后提供一个配置模版可直接修改。

cd /opt/sqle/etc
vim config.yml
提示

确保 config.yaml 的文件 owner 为 actiontech-universe:actiontech

启动 SQLE

SQLE 进程通过 Systemd 管理。在成功安装 RPM 后,执行启动命令:

cd /opt/sqle
chmod +x scripts/init_start.sh
./scripts/init_start.sh

访问SQLE

SQLE 对外提供 web 服务,在程序部署完成后,即可通过 SQLE UI 访问:http://127.0.0.1:10000, 地址和端口为配置文件内 dms.api 配置项。

启动失败问题诊断

参考:https://github.com/actiontech/sqle/discussions/1239

- +
版本:v3

RPM安装

环境准备

  • CentOS 7
  • MySQL 5.7

下载安装包

下载 SQLE 的 RPM 安装包,下载连接点击这里

安装 SQLE

执行 RPM 的安装命令:

rpm -ivh /path/to/sqle-ce-${version}.qa.el7.x86_64.rpm --prefix=/opt/sqle

创建数据库

准备一台 MySQL5.7 作为 SQLE 的后端存储数据库。执行下面命令创建 SQLE 需要的 schema:

CREATE DATABASE IF NOT EXISTS sqle default character set utf8mb4 collate utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS dms default character set utf8mb4 collate utf8mb4_unicode_ci;
提示

创建好的 Schema 将在下面修改SQLE配置时使用到。

修改 SQLE 配置文件

安装完 SQLE 后,需要根据实际情况修改SQLE的配置,参考:配置文件说明。SQLE安装完成后提供一个配置模版可直接修改。

cd /opt/sqle/etc
vim config.yaml
提示

确保 config.yaml 的文件 owner 为 actiontech-universe:actiontech

启动 SQLE

SQLE 进程通过 Systemd 管理。在成功安装 RPM 后,执行启动命令:

cd /opt/sqle
chmod +x scripts/init_start.sh
./scripts/init_start.sh

访问SQLE

SQLE 对外提供 web 服务,在程序部署完成后,即可通过 SQLE UI 访问:http://127.0.0.1:10000, 地址和端口为配置文件内 dms.api 配置项。

启动失败问题诊断

参考:https://github.com/actiontech/sqle/discussions/1239

+ \ No newline at end of file diff --git a/docs/deploy-manual/source/index.html b/docs/deploy-manual/source/index.html index 8b19d56a..5dc44376 100644 --- a/docs/deploy-manual/source/index.html +++ b/docs/deploy-manual/source/index.html @@ -4,13 +4,13 @@ 源码安装 | SQLE 文档 - +
版本:v3

源码安装

环境准备

  • CentOS 7
  • MySQL 5.7
  • Docker
  • Docker Compose(可选)

获取源码

SQLE 前端与后端代码分两个仓库维护,所以想要通过源码安装,需要构建前后端代码。

首先选择一个源码安装的工作目录,例如 ~/sqle-build/。

获取后端源码:

cd ~/sqle-build/
git clone https://github.com/actiontech/sqle.git
cd sqle && git checkout -b release-3.2310.x

cd ~/sqle-build/
git clone https://github.com/actiontech/dms.git
cd dms && git checkout -b release-3.2310.x

获取前端源码:

cd ~/sqle-build/
git clone https://github.com/actiontech/dms-ui.git

编译源码

编译前端代码,并将前端代码拷贝至后端代码目录:

cd ~/sqle-build/dms-ui
docker run --rm -v $PWD:/app -w /app gplane/pnpm:8.3.1 sh -c "git config --global --add safe.directory /app && pnpm config set registry https://registry.npm.taobao.org && pnpm install --no-frozen-lockfile && pnpm build"
rm -rf ~/sqle-build/sqle/static && cp -r ~/sqle-build/dms-ui/packages/base/dist ~/sqle-build/sqle/static

编译后端代码并打包:

cd ~/sqle-build/dms
make docker_install
cp -r ~/sqle-build/dms/bin ~/sqle-build/sqle/bin
cd ~/sqle-build/sqle
make docker_rpm_with_dms

打包完成后会在当前目录下生成一个 SQLE 的 RPM 包,后续的步骤参考:RPM 部署

- + \ No newline at end of file diff --git a/docs/deploy-manual/upgrade/index.html b/docs/deploy-manual/upgrade/index.html index 377877e1..6f402358 100644 --- a/docs/deploy-manual/upgrade/index.html +++ b/docs/deploy-manual/upgrade/index.html @@ -4,13 +4,13 @@ 升级说明 | SQLE 文档 - +
版本:v3

升级说明

提示

注意:若在升级期间SQLE中有正在上线的工单、或者定时执行的SQL,会造成SQL上线失败。

如果安装的是SQLE集群版本,则升级步骤需要在所有节点上进行。

升级准备

  1. 在开始升级之前,请务必对SQLE和DMS数据库中的数据进行备份。
  2. 查看当前SQLE的版本。
  3. 获取所需的SQLE升级安装包。

执行升级

  1. 停止SQLE服务
systemctl stop dms
systemctl stop sqled
  1. 执行RPM文件升级SQLE
rpm -Uvh --force {your rpm file} --prefix={your install file}

示例:rpm -Uvh --force sqle-ce-main.qa.el7.x86_64.rpm --prefix=/opt/sqle

  1. 根据版本变更内容修改数据库结构、配置文件等。

    • 请注意,某些版本的升级可能会引入不兼容的更改。您可以在GitHub上查看版本变更的不兼容内容以及变更方案。具体变更请参考升级方案
    • 如果没有元数据或配置变更,则可以跳过此步骤。
  1. 启动SQLE服务
systemctl start dms
systemctl start sqled
  1. 清理浏览器缓存后重新打开SQLE。
    • 某些版本的升级可能涉及前端资源的更新,若不清理浏览器缓存可能造成前端资源未刷新,导致部分功能异常,因此建议在升级完成后清理浏览器缓存。
  2. 检查SQLE的版本号以确认升级完成。
- + \ No newline at end of file diff --git a/docs/dev-manual/OpenAPI/dmstoken/index.html b/docs/dev-manual/OpenAPI/dmstoken/index.html index 46282aa6..78587461 100644 --- a/docs/dev-manual/OpenAPI/dmstoken/index.html +++ b/docs/dev-manual/OpenAPI/dmstoken/index.html @@ -4,7 +4,7 @@ 如何对接SQLE | SQLE 文档 - + @@ -12,7 +12,7 @@
版本:v3

如何对接SQLE

对接 SQLE 是 SQLE 社区中常见的需求之一。为了帮助开发者顺利完成应用与 SQLE 的对接,本文档提供了对接 SQLE 的基本思路,并记录了一些常见问题的解答。

本文档也会持续更新。如果您需要进一步的支持,请加入 SQLE 社区服务群,提出您的需求,我们将竭诚为您服务。👉社区支持

调用登录SQLE的接口获取dms-token

在SQLE更新到3.0之后,DMS接管了SQLE的部分功能,前端通过访问DMS来访问SQLE,用于鉴权的token存放在Cookie的dms-token中,若要获取到dms-token,需要先调用登录SQLE的接口,使用SQLE中存在的账号及其密码登录SQLE,从响应体或响应的Cookie中获取dms-token

请求

  • 请求URL: http://{ip:port}/v1/dms/sessions
  • 请求方法: POST
  • Content-Type: application/json

请求体/负载示例:

{
"session":{
"username":"用户名称",
"password":"用户密码"
}
}

响应

您可以在Cookie中获取到dms-token

NameValueDomainPathExpiresMaxAgeHttpOnlySecure
dms-token{dms-token值}{ip地址}-{dms-token过期时间}---

igcookie

您也可以在响应体中获取到dms-token值

{
"data": {
"token": "{dms-token值}"
},
"code": 0,
"message": ""
}

igpreview

使用dms-token调用SQLE的接口

在接下来请求的Cookie中带上 dms-token。SQLE会使用dms-token进行鉴权。

以进行SQL审核的接口为例:

Method: POST 
URL: http://dms_ip:dms_port/sqle/v1/projects/default/sql_audit_records
Content-Type: multipart/form-data;
Cookie: dms-token={dms-token值}
Payload:
instance_name: MySQL
instance_schema: test_schema
sqls: show tables;

注意事项

SQLE的大部分接口都会对dms-token进行校验,若未携带dms-token或携带错误的dms-token,请求都会被拦截,从而导致失败。 请求未携带dms-token时,响应如下:

{
"message": "can not find dms-token"
}

请求携带错误的dms-token时,响应如下:

{
"message": "invalid or expired jwt"
}

对接SQLE的功能

确认接口调用流程

若您需要对接某个SQLE的功能,可以打开SQLE的前端界面,点击F12打开开发人员工具,对您想要对接的功能进行操作,然后参考前端界面的接口调用流。即可确认接口调用的流程。

使用dms-token调用SQLE的接口中,示例的SQL审核的接口是创建SQL审核的http调用流程的其中一步,要完整的对接SQL审核功能,可以参考前端的调用 usepreview

确认接口参数

接口可以参考在github上的开源项目的swagger接口文档。

  1. SQLE的Swagger文档地址:https://github.com/actiontech/sqle/tree/main/sqle/docs
  2. DMS的Swagger文档地址:https://github.com/actiontech/dms/tree/main/api

喜欢的话可以给我们一个Star呢!(●'◡'●)

- + \ No newline at end of file diff --git a/docs/dev-manual/auditplugins/eclipse/index.html b/docs/dev-manual/auditplugins/eclipse/index.html index 6089ea9a..2c3711cd 100644 --- a/docs/dev-manual/auditplugins/eclipse/index.html +++ b/docs/dev-manual/auditplugins/eclipse/index.html @@ -4,7 +4,7 @@ Eclipse审核插件 | SQLE 文档 - + @@ -13,7 +13,7 @@ eclipse-install

配置插件

  1. 进入配置页面
    1. 点击Eclipse菜单栏-Window-Preferences-SQLE
  2. 输入连接信息
    1. 在SQLE Addr栏中输入SQLE服务的地址
    2. 选择HTTP连接方式
    3. 输入登录信息
      1. 选择账号密码登录时,需要填写用于登录的账密信息
      2. 选择token登录时,需要填写在个人中心生成的访问令牌
    4. 点击Test Connection按钮,确保能够成功连接到SQLE并获取项目和数据库类型列表。
  3. 选择审核的数据对象
    1. 依次选择Project、DB Type、Data Source和Schema下拉框,配置要进行审核的数据库信息。
  4. 保存配置
    1. 点击Apply and Close按钮保存配置并退出配置界面,完成配置。

eclipse-install-edit

配置说明

配置项配置项说明
SQLE AddrSQLE 服务地址, 格式为 IP:Port
HTTP指定连接SQLE的方式是通过HTTP还是HTTPS
UserName登录SQLE使用的用户名
Password登录SQLE使用的密码
Test Connection测试连接是否成功, 将尝试登录SQLE
Project项目名称
DB Type当其他配置正确时,该下拉菜单将自动获取支持审核的数据库实例类型,并使用该实例类型的审核规则进行审核
Data Source数据源名称
Schema数据库名称

使用说明

按照以下步骤使用插件:

  1. 选中需要审核的SQL语句,可以同时选中多条。
  2. 右键点击选中的SQL语句,选择[SQLE SQL Audit],插件将以视图的形式展示审核结果。 eclipseaudit1
  3. 若要审核MyBatis XML文件或SQL文件,选中对应的文件,右键点击,选择[SQLE MyBatis Audit]eclipseauditxml
提示

目前还支持对文件夹进行SQL审核,但仅支持审核文件夹中的XML文件。

后续操作

Eclipse中产生的审核操作,将同步记录到SQLE平台,您可以在平台查看历史审核记录

- + \ No newline at end of file diff --git a/docs/dev-manual/auditplugins/introduction/index.html b/docs/dev-manual/auditplugins/introduction/index.html index fda0a8aa..199e9a73 100644 --- a/docs/dev-manual/auditplugins/introduction/index.html +++ b/docs/dev-manual/auditplugins/introduction/index.html @@ -4,13 +4,13 @@ 功能说明 | SQLE 文档 - + - + \ No newline at end of file diff --git a/docs/dev-manual/auditplugins/jetbrains/index.html b/docs/dev-manual/auditplugins/jetbrains/index.html index 11525cb9..8ae9a439 100644 --- a/docs/dev-manual/auditplugins/jetbrains/index.html +++ b/docs/dev-manual/auditplugins/jetbrains/index.html @@ -4,7 +4,7 @@ IDEA审核插件 | SQLE 文档 - + @@ -15,7 +15,7 @@ ide-install-use

2.用户也可以选中文件后,点击右键, 选中 [SQLE] - [Audit],将获得对文件中SQL的审核结果,支持一次性审核整个文件夹下的MyBatis文件; ide-install-use2

审核结果

插件会以弹窗的形式将审核结果进行展示,用户可查看SQL触发的审核规则,并查看对应的知识库说明。 ide-install-result

常见问题解答

为什么插件配置项中的 [DB Type] 点击时偶尔会卡一下

这是因为点击下拉框时下拉框会连接SQLE获取支持的实例类型, 这个过程可能会出现网络延迟

SQLE在审核时使用的规则模板是什么

SQLE会根据设置中指定的数据库类型, 选择对应类型的默认模板进行审核, 且只会使用默认模板中的静态审核规则

我没有SQLE环境可以使用这个插件吗

SQLE有演示环境, 如果只是想尝试一下这个插件可以连接演示环境

插件支持哪些IDE

Jetbrains家的所有软件和 [Android Studio] 都是支持的

SQLE插件的配置存在什么地方

 {用户根目录}\AppData\Roaming\JetBrains\{idea版本号对应目录}\options\SQLESettings.xml
变量说明
用户根目录一般为 C:\Users 目录下和用户名同名的目录, 内部一般包含 '桌面', '下载' 等文件夹
idea版本号对应目录一般为 软件名版本号 的格式, 如社区版idea 2022.1版本对应目录名为 IdealC2022.1
- + \ No newline at end of file diff --git a/docs/dev-manual/intro/index.html b/docs/dev-manual/intro/index.html index 2df5e1c2..28566180 100644 --- a/docs/dev-manual/intro/index.html +++ b/docs/dev-manual/intro/index.html @@ -4,13 +4,13 @@ 产品架构 | SQLE 文档 - + - + \ No newline at end of file diff --git a/docs/dev-manual/plugins/howtodev/index.html b/docs/dev-manual/plugins/howtodev/index.html index 62eec922..bccee71c 100644 --- a/docs/dev-manual/plugins/howtodev/index.html +++ b/docs/dev-manual/plugins/howtodev/index.html @@ -4,7 +4,7 @@ 数据库审核插件开发 | SQLE 文档 - + @@ -12,7 +12,7 @@
版本:v3

数据库审核插件开发

在本篇文档中,会介绍如何开发一个数据库审核插件,分为快速开始部分和详细部分。

  • 如果你是一个对 Go 语言不太了解的人,可以先通过快速开始部分的文档,实现一个简单的数据库审核插件。
  • 当你对插件开发有了一定的了解之后,可以通过详细部分的文档,通过更多自定义的方式,实现更加复杂的数据库审核插件。

快速开始

前置

1. 语法

由于 SQLE 是一个用 Go 语言开发的开源项目,如果你对 Go 语言完全不了解,需要先了解 Go 语言的基础语法,建议使用官方的 Go 语言快速开始文档(Go Tour 或者 Go 语言之旅),如果你已经了解了 Go 语言的基础语法,可以直接跳过本部分。

2. 包管理

SQLE 插件是一个独立于 SQLE 的进程,所以编写插件的方式与开发一个新的 Go 语言项目并没有什么差异。Go 语言项目使用 Go Modules 来管理包,所以在开始之前你需要先了解一下 Go Modules 的使用方法。建议参考这篇文档,文档中大致介绍了如果开始一个新的 Go 语言项目,并通过 Go Modules 的方式来调用其他项目的包,如果你已经了解了 Go Modules 的使用方法,可以直接跳过本部分。

3. Go语言项目构建

编写插件

这一小节会假设你已经创建了一个由 Go Modules 管理的审核插件项目。下面开始介绍插件核心代码的开发。

1. 数据库插件介绍

SQLE 为了方便插件的开发,在自身的插件层之上做了一层封装(Adaptor),插件开发者可以使用这个封装库来快速的开发一个数据库审核插件。

在开发之前,你需要先引入 SQLE:

go get github.com/actiontech/sqle@v2.2305.0-pre2 # 此版本为该文档编辑时的最新版本

选择 SQLE 中两个库插件相关的库:

  • github.com/actiontech/sqle/sqle/driver
  • github.com/actiontech/sqle/sqle/pkg/driver
提示
  • 第一个库定义了插件规则的结构体,在你编写插件规则时需要用到这个库。
  • 第二个库中实现了一些默认的插件,在引入这个库后,只需要实现相应的规则与规则处理函数即可。其中三个默认的插件为:
    • PostgreSQL
    • Oracle
    • SQL Server
  • 如果这三个默认的插件不能满足需求,可以自己实现一个插件,参考本篇文档自定义插件小节。

2. 选择插件

下面假设你想要实现一个 SQL Server 的审核插件。在 main 函数中创建一个空的 SQL Server 审核插件,这时你的 main 文件应该是这样的:

package main

import (
"github.com/actiontech/sqle/sqle/driver"
adaptor "github.com/actiontech/sqle/sqle/pkg/driver"
)

func main() {
plugin := adaptor.NewAdaptor(&adaptor.MssqlDialector{})
}

3. 编写插件规则与规则处理函数

假设你需要实现一个规则,该规则检查 SQL 是否使用了 select *。定义规则如下:

Rule{
Name: "aviod_select_all_column", # 规则ID,该值会与插件类型一起作为这条规则在 SQLE 的唯一标识
Desc: "避免查询所有的列", # 规则描述
Category: "DQL规范", # 规则分类,用于分组,相同类型的规则会在 SQLE 的页面上展示在一起
Level: driver.RuleLevelError, # 规则等级,表示该规则的严重程度。在插件注册阶段,会使用所有 RuleLevelError 级别的规则创建一个默认的规则模板。
}

规则的处理函数如下:

func(ctx context.Context, rule *driver.Rule, sql string) (string, error) {
if strings.Contains(sql, "select *") {
return rule.Desc, nil
}
return "", nil
}

这里为了演示,这个处理函数只是简单的使用了字符串匹配的方式,你也可以使用正则或者 AST 语法树的方式来检查 SQL 语句(AST 的方式会在自定义SQL解析器一小节中介绍)。

最后将插件规则与规则处理函数通过 plugin.AddRule()函数注册到 SQLE 中,注册完成后,你的 main 文件应该是这样的:

package main

import (
"github.com/actiontech/sqle/sqle/driver"
adaptor "github.com/actiontech/sqle/sqle/pkg/driver"
)

func main() {
plugin := adaptor.NewAdaptor(&adaptor.MssqlDialector{})
aviodSelectAllColumn := &driver.Rule{
Name: "aviod_select_all_column",
Desc: "避免查询所有的列",
Category: "DQL规范",
Level: driver.RuleLevelError,
}
aviodSelectAllColumnHandler := func(ctx context.Context, rule *driver.Rule, sql string) (string, error) {
if strings.Contains(sql, "select *") {
return rule.Desc, nil
}
return "", nil
}
plugin.AddRule(aviodSelectAllColumn, aviodSelectAllColumnHandler)

////////////////////////////////////////////
// ... 编写更多规则并通过 AddRule 注册到 SQLE 中
////////////////////////////////////////////

// 最后关键一步,调用 `plugin.Serve()` 启动插件:
plugin.Serve()
}

4. 构建并使用插件

和通常的程序编写流程一样,编写完插件代码后,需要将其构建成二进制文件,然后才能将其注册到 SQLE 中。执行 go build -o ${二进制名} main.go 将插件代码构建成二进制文件。最后参考数据库审核插件使用 来使用你的自定义插件。

自定义部分

1.自定义SQL解析器

前面介绍的审核规则都是通过字符串匹配的方式来解析 SQL 的内容。这种方式适合规则较少且 SQL 简单的情况下使用。

如果需要对 SQL 进行更复杂的解析匹配,恰好你选择的数据库插件又有相应的 SQL 解析器,这时可以使用自定义 SQL 解析器的方式来编写插件。

首先通过调用 WithSQLParser() 注册自己的 SQL 解析器。在添加规则时则使用 plugin.AddRuleWithSQLParser() 添加带有解析器的处理函数。在处理函数中,将 interface{} 断言成具体的 AST 语法树,通过语法树级别的操作来更加精细的处理 SQL。PostgreSQL 提供了基于 cgo 调用的解析器(见:PostgreSQL SQL 解析器),下面的代码展示了如何写一个 SQL 解析器的插件:

func main() {
plugin := adaptor.NewAdaptor(&adaptor.PostgresDialector{})

// 依然是定义规则
aviodSelectAllColumn := &driver.Rule{
Name: "aviod_select_all_column",
Desc: "避免查询所有的列",
Category: "DQL规范",
Level: driver.RuleLevelError,
}

// 依然是定义处理函数,这时处理函数的参数是 interface{} 类型,需要将其断言成 AST 语法树。
aviodSelectAllColumnHandler := func(ctx context.Context, rule *driver.Rule, ast interface{}) (string, error) {
node, ok := ast.(*parser.RawStmt)
if !ok {
return "", errors.New("ast is not *parser.RawStmt")
}

switch stmt := node.GetStmt().GetNode().(type) {
case *parser.Node_SelectStmt:
for _, target := range stmt.SelectStmt.GetTargetList() {
column, ok := target.GetResTarget().GetVal().GetNode().(*parser.Node_ColumnRef)
if !ok {
continue
}
for _, filed := range column.ColumnRef.GetFields() {
_, ok = filed.GetNode().(*parser.Node_AStar)
if ok {
return rule.Desc, nil
}
}
}
}
return "", nil
}

// 依然是注册规则,与前面的例子不同的是,这时使用的是 `plugin.AddRuleWithSQLParser()` 。
plugin.AddRuleWithSQLParser(aviodSelectAllColumn, aviodSelectAllColumnHandler)

// 依然是启动插件,与前面的例子不同的是,需要将 SQL 解析的方法注册到插件中。
plugin.Serve(adaptor.WithSQLParser(func(sql string) (ast interface{}, err error) {
// parser.Parse 使用 PostgreSQL 的解析器,将 sql 解析成 AST 语法树。
result, err := parser.Parse(sql)
if err != nil {
return nil, errors.Wrap(err, "parse sql error")
}
if len(result.Stmts) != 1 {
return nil, fmt.Errorf("unexpected statement count: %d", len(result.Stmts))
}

// 将 SQL 的语法树返回。
return result.Stmts[0], nil
}))
}

2.自定义插件

如果 driver 包中默认的 PostgreSQL、Oracle 与 SQL Server 插件不能满足你的需求的话,你也可以自定义一个数据库插件。方法就是实现一个接口:

type Dialector interface {
Dialect(dsn *driver.DSN) (driverName string, dsnDetail string)
ShowDatabaseSQL() string
String() string
}

在实现这个接口前,你需要先了解一下 Go 语言原生 Driver 的概念(以 MySQL Driver 为例)。

下面介绍 Dialector 接口的含义:

  • Dialect:实现该方法,通过 DSN 提供的 Host Port User Password Database 信息和你选择的数据库 driver,构造出 driverName 与 dsnDetail。driverName 是你引入的数据库 driver 名称;dsnDetail 是连接数据库驱动的必要信息。这两个参数最终会通过 sql.Open() 来创建一个数据库连接。
  • ShowDatabaseSQL:实现该方法,可以自定义你数据源中默认展示的数据库列表,该数据库列表最终会展示在工单审核列表的数据库下拉框中,如下图: pluginworkflow
  • String:实现该方法,该方法的返回值会作为你实现的数据库审核插件名展示在 SQLE 的相关下拉框中,如下图: plugintype

将你的实现作为 NewAdaptor 的参数传入即可,后续的步骤与前面规则相关的介绍一致。

详细

SQLE与插件的交互图

sqleplugin

插件接口说明

1.注册接口说明

该接口定义了该插件的名称和实现的规则,SQLE启动的时候会调用该接口获取插件名称和该插件支持的规则列表。

type Registerer interface {
Name() string
Rules() []*model.Rule
}
  • Name: 插件名,最终会展示在 SQLE 页面的数据源类型的下拉框中;
  • Rules: 插件支持的规则,在启动 SQLE 时,会调用插件获取这些规则,你将在规则模板内看到它们。

2.审核接口说明

该接口定义了SQLE进行审核时,由插件完成的和具体数据库底层交互的操作

type Driver interface {
Close(ctx context.Context)
Ping(ctx context.Context) error
Exec(ctx context.Context, query string) (driver.Result, error)
Tx(ctx context.Context, queries ...string) ([]driver.Result, error)
Schemas(ctx context.Context) ([]string, error)
Parse(ctx context.Context, sqlText string) ([]Node, error)
Audit(ctx context.Context, sql string) (*AuditResult, error)
GenRollbackSQL(ctx context.Context, sql string) (string, string, error)
}
  • Close: 关闭审核插件使用的相关资源,通常是完成一次审核后,关闭数据库连接等资源;
  • Ping: 检测数据库的连接性,通常在添加数据源时,为了检测填写的数据是否正确,会调用此方法;
  • Exec: 执行 SQL 上线时执行此方法;
  • Tx: 执行 SQL 上线时执行此方法,一般当SQL是DML时且需要事务执行时会批量执行SQL;
  • Schemas: 返回审核插件展示给用户的 Schema 列表;
  • Parse: 解析审核插件支持的 SQL 格式;
  • Audit: 根据指定的SQL语句生成审核建议;
  • GenRollbackSQL: 生成 SQL 的回滚语句。

3.插件的配置信息说明

type Config struct {
DSN *DSN
Rules []*Rule
}
  • DSN: 数据源信息, 待审核的数据库;
  • Rules: 本次审核制定的规则列表。

4.初始化函数说明

插件的主进程入口,由插件的 main 函数调用即可实现插件

func ServePlugin(r Registerer, newDriver func(cfg *Config) Driver)
  • r: 传入 Registerer 的接口实现, 由插件侧实现;
  • newDriver: 传入 Driver 的初始化函数,该函数的入参是 Config 是由 SQLE 向插件传递的配置信息,函数的出参是 Driver 的接口实现,由插件侧实现。
- + \ No newline at end of file diff --git a/docs/dev-manual/plugins/howtouse/index.html b/docs/dev-manual/plugins/howtouse/index.html index 1fd2b183..75c78e9c 100644 --- a/docs/dev-manual/plugins/howtouse/index.html +++ b/docs/dev-manual/plugins/howtouse/index.html @@ -4,7 +4,7 @@ 数据库审核插件使用 | SQLE 文档 - + @@ -15,8 +15,8 @@ check 脚本自动修改相关配置并启动SQLE config

新增插件

  1. 进入SQLE目录下的scripts目录,执行插件配置脚本;
  2. 输入需要使用的数据源插件序号(注:已启用的数据源插件需要也需要填写);
  3. 后续操作与配置插件一致;

删除插件

  1. 进入SQLE目录下的scripts目录,执行插件配置脚本;
  2. 输入需要使用的数据源插件序号,不再填写需要删除的数据源插件序号;
  3. 后续操作与配置插件一致;
提示
  1. 针对Oracle和DB2类型的数据源,须先在SQLE环境中安装JDK -yum install java-1.8.0-openjdk* -y
  2. 针对Sql Server类型的数据源,需要安装 .net 6.0 版本
- +yum install java-1.8.0-openjdk* -y
  • 针对Sql Server类型的数据源,需要安装 .net 6.0 版本
  • + \ No newline at end of file diff --git a/docs/dev-manual/plugins/intro/index.html b/docs/dev-manual/plugins/intro/index.html index fd5ad190..83f66ebd 100644 --- a/docs/dev-manual/plugins/intro/index.html +++ b/docs/dev-manual/plugins/intro/index.html @@ -4,13 +4,13 @@ 功能说明 | SQLE 文档 - +
    版本:v3

    功能说明

    SQLE 使用 go-plugin 来实现审核插件化。插件只需实现两个接口,即可实现与 SQLE 主进程通信(详情见审核插件开发)。

    将 SQLE 的数据库审核插件化主要有以下目的:

    • 将审核流程(业务)的代码和具体审核实现的代码进行分离,支持多数据源类型的审核
    • 审核插件在满足基本规范情况下,与 SQLE 独立开发

    部分插件项目地址

    - + \ No newline at end of file diff --git a/docs/guide/index.html b/docs/guide/index.html index a3ec4859..9a892ce3 100644 --- a/docs/guide/index.html +++ b/docs/guide/index.html @@ -4,13 +4,13 @@ 用户指南 | SQLE 文档 - +
    版本:v3

    用户指南

    产品概述

    SQLE 是爱可生自主研发支持多元数据库的 SQL 质量管理平台。应用于开发、测试、上线发布、生产运行阶段的 SQL 质量治理。通过 “建立规范、事前控制、事后监督、标准发布” 的方式,为企业提供 SQL 全生命周期质量管控能力,规避业务 SQL 不规范引起的生产事故,提高业务稳定性,也可推动企业内部开发规范快速落地。

    - + \ No newline at end of file diff --git a/docs/intro/index.html b/docs/intro/index.html index 2ef53df1..76a600ba 100644 --- a/docs/intro/index.html +++ b/docs/intro/index.html @@ -4,13 +4,13 @@ 产品介绍 | SQLE 文档 - +
    版本:v3

    产品介绍

    SQLE 是爱可生自主研发支持多元数据库的 SQL 质量管理平台。应用于开发、测试、上线发布、生产运行阶段的 SQL 质量治理。通过 “建立规范、事前控制、事后监督、标准发布” 的方式,为企业提供 SQL 全生命周期质量管控能力,规避业务 SQL 不规范引起的生产事故,提高业务稳定性,也可推动企业内部开发规范快速落地。

    产品特性

    更丰富的数据源支持

    支持主流商业和开源数据库,包括 MySQL、PostgreSQL、Oracle、SQL Server、DB2、TiDB、OceanBase 等,持续增加新的数据源类型,以满足您不同的需求。

    更全面的审核规则

    审核规则源自我们经验丰富的 DBA 运维专家团队多年的技术积累。您可以借助我们的审核规则快速达到专家级的 SQL 诊断能力,并且我们的规则库目前已经拥有规则 700+,并在不断增加中。

    更智能的 SQL 采集

    提供多种智能扫描方式,例如慢日志、JAVA 应用等,以满足您的事前和事后 SQL 采集需求。一旦配置完成,我们的系统会自动持续采集各业务库中的 SQL,极大地减轻了您对 SQL 监督的压力,并及时发现问题 SQL。

    更高效的审批流转路径

    提供标准化的工作流,化解了在沟通和进度追踪上的难题,从而提升了上线效率。您可以通过与飞书、钉钉等多种消息通道的对接,及时了解更新进度,减少了沟通交流的成本。

    更便捷的 SQL 数据操作

    提供审核管控的SQL客户端,杜绝执行不合规SQL

    全生命周期的 SQL 管控

    提供 SQL 全流程的管控视角,帮助您统一管理SQL质量。您可以追踪问题SQL的解决进度,并提供快捷的优化功能,以提升 SQL 的效率。

    使用场景

    SQL 太复杂,执行性能低,如何优化?
    知识赋能,助您构建质量规范、提升 SQL 质量。提供审核规则及规则知识库,将专家经验赋能开发,快速提升问题 SQL 诊断能力,并支持私有云用户自主沉淀。
    • 从审核结果看 SQL 优化方向

      平台提供丰富的审核规则,用以覆盖不同 SQL 审核场景,您可以根据触发的规则,有针对性地优化 SQL。

    • 从知识库了解问题解决经验

      每个规则包含对应的知识库,是运维专家的经验沉淀,您可以借鉴并强化自身的运维认知。

    • 对知识库做自主沉淀

      除了平台提供的知识库信息,我们还支持私有云用户在知识库中进行自主沉淀,建立您的质量规范。

    应用数量多,SQL 采集难,如何摆脱重复劳动?

    提供智能扫描任务,可以自动持续采集不同来源的 SQL,帮助您摆脱重复劳动,极大地降低 SQL 采集难度。同时,根据不同业务要求定期巡检和生成审核报告,快速发现问题并提供优化建议。

    • 配置扫描任务,释放 SQL 采集负担

      平台支持十余种扫描任务类型,支持采集不同来源的 SQL,如:JAVA 应用程序、慢日志文件、TopSQL、MyBatis 文件等。

    • 定期持续巡检,提前发现问题 SQL

      平台将根据配置的采集周期,为您自动、持续采集相应 SQL。

      平台将根据配置的审核规则模板,定期巡检和生成审核报告,有助于您及时发现问题 SQL,并提供优化方向。

    公司规模大,流程周转长,如何有效追踪进度?
    提供标准化工作流,帮助提高工作透明度和上线效率。您可以根据实际组织架构配置自定义审批流程模板,化解沟通和进度追踪难题。同时,平台支持与多种消息通道对接,可以及时更新进度,减少沟通成本。
    • 生成您的自定义审批流程

      平台支持您根据自身实际业务,配置SQL审批、上线流程,适配不同业务的上线节奏,提升业务响应效率。

    • 配置消息推送渠道,快捷订阅变更

      平台支持对接多种主流IM应用,您可以将 SQL 审核集成到日常工作流中,协同办公,提升工作效率。

    SQL 变更频,审批瓶颈大,如何分散审核压力?
    将审核环节灵活嵌入到研发流程,从研发环节入手,减轻 DBA 审核压力。平台支持多种事前审核场景,将 SQL 审核前置到代码阶段,从源头实现降本增效。
    • 使用 IDE 插件,前置规范检查

      可以使用 IDE 审核插件,在代码编写过程中进行实时审核和规范检查,实现编码即审核的效果。

    • 对接 CI/CD 流程,保证应用代码上线无忧

      可以配置 CI/CD 审核流程,自动抓取代码变更中的 SQL,减少人工错误和代码缺陷,提高开发团队的效率和代码质量。

    - + \ No newline at end of file diff --git a/docs/online-demo/index.html b/docs/online-demo/index.html index bf5ccac8..4263c2ec 100644 --- a/docs/online-demo/index.html +++ b/docs/online-demo/index.html @@ -4,13 +4,13 @@ 在线体验 | SQLE 文档 - +
    版本:v3

    在线体验

    地址

    登录用户

    userpassword
    adminadmin

    测试 MySQL

    variablevalue
    host20.20.20.3
    port3306
    userroot
    passtest

    注意事项

    1. 该服务仅用于在线功能体验,请勿在生产环境使用;
    2. 该测试服务数据会定期清理。
    - + \ No newline at end of file diff --git a/docs/quick-usage/index.html b/docs/quick-usage/index.html index 2e6f6af4..10a464fb 100644 --- a/docs/quick-usage/index.html +++ b/docs/quick-usage/index.html @@ -4,7 +4,7 @@ 快速开始 | SQLE 文档 - + @@ -21,7 +21,7 @@ project-workflow-1 点击批量立即上线,完成SQL上线操作。 project-workflow-1

    提示

    SQLE 支持通过邮件,微信企业号等途径推送工单通知。也可以配置工单对接,在钉钉、飞书上进行工单审批

    - + \ No newline at end of file diff --git a/docs/support/commercial-support/index.html b/docs/support/commercial-support/index.html index 6f6ce38d..db3397cc 100644 --- a/docs/support/commercial-support/index.html +++ b/docs/support/commercial-support/index.html @@ -4,13 +4,13 @@ 商业支持 | SQLE 文档 - +
    版本:v3

    商业支持

    如果想获得 SQLE 的商业支持, 您可以扫描下方的微信扫描小程序码,进行在线咨询预约:

    commercial-support

    此外,您也可以直接联系我们的商业支持团队获取更多信息,联系方式如下:

    400-820-6580 / 13916131869 / 18930110869

    - + \ No newline at end of file diff --git a/docs/support/community-support/index.html b/docs/support/community-support/index.html index 1e3c9f57..415b14be 100644 --- a/docs/support/community-support/index.html +++ b/docs/support/community-support/index.html @@ -4,13 +4,13 @@ 社区支持 | SQLE 文档 - +
    版本:v3

    社区支持

    微信技术交流群

    欢迎加入微信群进行交流,反馈使用中遇到的问题或者使用建议。

    进群方式:添加管理员微信 ActionOpenSource

    爱可生社区公众号

    关注爱可生社区公众号,获取最新SQLE动态包括新功能清单与产品规划。

    项目列表

    - + \ No newline at end of file diff --git a/docs/support/compare/index.html b/docs/support/compare/index.html index 8194984b..64805e48 100644 --- a/docs/support/compare/index.html +++ b/docs/support/compare/index.html @@ -4,13 +4,13 @@ 功能对比 | SQLE 文档 - +
    版本:v3

    功能对比

    社区版及企业版功能对比

    模块功能社区版专业版企业版
    支持的数据源类型MySQL
    Mycat
    TDSQL for InnoDB
    OceanBase For MySQL
    DB2
    TiDB
    PostgreSQL
    Oracle
    OceanBase For Oracle
    SQL Server
    达梦
    GoldenDB
    审核方式页面UI审核
    IDEA插件审核
    Eclipse插件审核
    Devops流水线审核
    SQL审核能力动态配置审核规则模板
    审核白名单
    自定义审核规则
    沉淀规则知识库
    多数据源审核
    多种SQL上传方式
    SQL美化
    基于规则的审核建议
    基础对象校验
    SQL上下文关联审核
    SQL下钻分析
    出具审核评分
    支持按规则等级筛选
    提供审核报告
    支持SQL语句下载
    工单上线自定义审核流程
    多数据源上线
    立即上线
    定时上线
    线下执行,线上标记
    中止上线
    生成回滚语句提示
    大表进行 Online DDL
    大表使用gh-ost上线
    智能扫描库表元数据
    会话SQL扫描
    MyBatis 扫描
    SQL文件扫描
    阿里云 RDS慢日志
    阿里云 RDS审计日志
    百度云RDS慢日志
    华为云RDS慢日志
    自定义(通过调用接口推送bash脚本、python程序中的SQL)
    慢日志审核
    TopSQL
    TiDB审计日志
    应用程序SQL抓取
    支持JAVA探针采集JAVA应用SQL
    数据操作集成CloudBeaver-提供在线SQL客户端
    数据导出
    平台基础能力项目管理
    用户角色管理
    审计日志
    个性化设置
    对接能力用户对接:LDAP
    用户对接:Oauth2.0单点登录
    邮件告警
    微信企业号告警
    微信企业号审批
    飞书告警
    飞书在线审批
    钉钉在线审批
    webhook告警
    OpenAPI:提供完整的标准接口方案
    数据源对接:支持爱可生云树DMP数据源同步
    量化管理报表统计
    项目概览
    Dashboard
    SQL管控
    专家服务提供数据对接、SQL规范制定、SQL优化建议等7x24小时服务

    各数据源支持程度对比

    提示

    目前支持的数据源类型中,除MySQL为社区版,其他均为企业版。

    MySQL系

    MySQLMycatTDSQL for InnoDBOceanBase For MySQLTiDB
    功能SQL分析
    SQL上下文
    元数据检查
    SQL回滚
    上线中止
    扫描任务库表元数据
    慢日志
    Processlist
    TopSQL
    TiDB审计日志
    MyBatis
    阿里RDS MySQL慢日志
    阿里RDS MySQL审计日志
    百度云RDS MySQL慢日志扫描
    SQL文件扫描
    应用程序抓取
    自定义
    其他规则数量176146162150153

    非MySQL系

    OracleOceanBase For OracleDB2PostgreSQLSQL server达梦
    功能SQL分析
    SQL上下文
    元数据检查
    SQL回滚
    上线中止
    扫描任务库表元数据
    慢日志
    Processlist
    TopSQL
    TiDB审计日志
    MyBatis
    阿里RDS MySQL慢日志
    阿里RDS MySQL审计日志
    百度云RDS MySQL慢日志扫描
    SQL文件扫描
    应用程序抓取
    自定义
    其他规则数量1148360722483
    - + \ No newline at end of file diff --git a/docs/user-manual/allinstance/index.html b/docs/user-manual/allinstance/index.html index 6d3b15a9..b9a00a70 100644 --- a/docs/user-manual/allinstance/index.html +++ b/docs/user-manual/allinstance/index.html @@ -4,13 +4,13 @@ 全局数据源管理 | SQLE 文档 - +
    版本:v3

    全局数据源管理

    • 当需要对多个项目中的数据源进行统一修改或查看时,此功能可以帮助迅速定位并进行操作。
    • 当需要进行跨项目管理工作时,可以使用该功能,确保对数据源的分布和配置情况一目了然,实现更高效的数据源管理和项目协调。

    使用步骤

    • 导航至全局设置,选择数据源管理页面,以访问平台管理的所有数据源列表。
    • 利用提供的筛选工具,根据项目需求或特定条件,精确筛选出您关注的数据源。

    instancelist

    - + \ No newline at end of file diff --git a/docs/user-manual/customrule/index.html b/docs/user-manual/customrule/index.html index c40a9df8..71553eb8 100644 --- a/docs/user-manual/customrule/index.html +++ b/docs/user-manual/customrule/index.html @@ -4,7 +4,7 @@ 自定义审核规则 | SQLE 文档 - + @@ -13,7 +13,7 @@ customrule-regex

    提示

    当前支持golang正则语法。

    应用自定义规则

    1.编辑数据源应用的规则模板,启用新建的自定义规则; 2.创建工单,新建表customers123,从工单审核结果中可以看到自定义规则已生效; customrule-result

    提示

    目前仅支持在SQLE平台新建自定义规则,暂不支持导入导出规则模板时携带自定义规则。

    后续操作

    目前,自定义规则也支持编辑知识库页面,以进一步优化审核规则的使用。可以参考知识库

    - + \ No newline at end of file diff --git a/docs/user-manual/intro/index.html b/docs/user-manual/intro/index.html index cdb5f155..9e2acc51 100644 --- a/docs/user-manual/intro/index.html +++ b/docs/user-manual/intro/index.html @@ -4,13 +4,13 @@ 用户手册 | SQLE 文档 - + - + \ No newline at end of file diff --git a/docs/user-manual/knowledgebase/index.html b/docs/user-manual/knowledgebase/index.html index d8f5065d..02451fbb 100644 --- a/docs/user-manual/knowledgebase/index.html +++ b/docs/user-manual/knowledgebase/index.html @@ -4,13 +4,13 @@ 规则知识库 | SQLE 文档 - +
    版本:v3

    规则知识库

    使用场景

    规则知识库是用于帮助用户理解规则背景、原理、优化建议以及规范SQL示例的页面。通过规则知识库,用户可以更深入和全面地了解规则,以实现更高效的开发和优化工作。

    使用入口

    1. 在系统设置中点击查看规则,点击具体规则,再点击规则知识库标签下的查看更多按钮,即可进入规则知识库详情;
    2. 在SQL审核、工单、扫描任务详情页面中,点击触发的规则说明后的查看更多按钮,即可进入规则知识库详情;

    范围

    规则知识库目前支持内置规则和自定义规则的编辑和查看。

    编辑步骤

    限制

    目前,只有平台管理员具有规则知识库的编辑权限,以确保知识库中的信息准确且权威。

    编辑

    平台管理员可以按照以下步骤编辑规则知识库内容:

    1. 登录平台并进入规则知识库页面,入口可以参考使用入口
    2. 点击'编辑'按钮,即可修改规则对应的知识库内容。

    操作结果

    knowledgebase-use

    提示

    目前,平台已为MySQL和TDSQL两种数据库类型的规则填充了规则知识库,并正致力于为其他数据库类型提供相应的知识库内容。

    - + \ No newline at end of file diff --git a/docs/user-manual/project/CICDintegration/index.html b/docs/user-manual/project/CICDintegration/index.html index aa6f7212..49082bbd 100644 --- a/docs/user-manual/project/CICDintegration/index.html +++ b/docs/user-manual/project/CICDintegration/index.html @@ -4,7 +4,7 @@ CI/CD集成 | SQLE 文档 - + @@ -13,7 +13,7 @@ 完成节点配置后保存。

    步骤二 获取流水线对接说明

    在流水线详情中,查看当前配置的流水线节点,查看节点后的对接说明,并获取已组合好的执行命令。

    步骤三 将流水线复制到上游CI/CD平台

    结合对接说明,配置上游CI/CD流水线的相应节点并触发,一旦发现SQL不符合预设的审核规范,将终止流水线并返回审核记录的url。 pipieline

    步骤四 查看审核结果

    审核的SQL及审核结果,将在SQLE页面记录,方便事后追溯 pipelineresult

    - + \ No newline at end of file diff --git a/docs/user-manual/project/IDEaudit/index.html b/docs/user-manual/project/IDEaudit/index.html index 6cf796ef..af43fb7f 100644 --- a/docs/user-manual/project/IDEaudit/index.html +++ b/docs/user-manual/project/IDEaudit/index.html @@ -4,13 +4,13 @@ IDE审核 | SQLE 文档 - +
    版本:v3

    IDE审核

    使用场景

    本功能适用于管理员和开发团队,旨在实现将IDE工具中生成的SQL审核同步到SQLE平台,以便管理员能够查看开发人员的审核记录和使用统计。这将帮助管理员了解开发团队的使用情况,进行性能优化和资源管理。

    前置操作:

    在开始使用本功能之前,请确保完成以下操作:

    • 请确保插件已正确安装和配置,以确保SQL审核记录能够成功同步到SQLE平台。
    提示

    目前SQLE已提供了IDEA和Eclipse的审核插件

    使用步骤:

    下面是将IDE生成的SQL审核同步到SQLE平台的详细步骤:

    生成SQL审核记录

    在IDE工具中创建或编辑SQL脚本,并执行审核操作。

    查看审核记录和使用统计

    登录到SQLE平台,导航到IDE审核记录页面。你将能够查看在IDE工具中生成的SQL审核记录,包括原始SQL和触发的规则。此外,你还可以获取有关开发团队的使用统计信息,如执行次数、执行时间等。

    后续操作

    根据审核记录和使用统计,管理员可以了解开发团队的SQL审核情况。这将有助于进行性能优化和资源管理,例如识别慢查询、优化SQL语句、调整资源分配等。

    - + \ No newline at end of file diff --git a/docs/user-manual/project/analysis/index.html b/docs/user-manual/project/analysis/index.html index b58fe472..01ce44cb 100644 --- a/docs/user-manual/project/analysis/index.html +++ b/docs/user-manual/project/analysis/index.html @@ -4,13 +4,13 @@ SQL分析 | SQLE 文档 - +
    版本:v3

    SQL分析

    SQL分析是什么

    当用户需要了解执行SQL的对象情况时,可以点击SQL后的分析操作,进入SQL分析页面

    使用场景

    操作步骤

    使用限制

    - + \ No newline at end of file diff --git a/docs/user-manual/project/audit_task/SQLfile_audit/index.html b/docs/user-manual/project/audit_task/SQLfile_audit/index.html index 6c396117..b7301fbb 100644 --- a/docs/user-manual/project/audit_task/SQLfile_audit/index.html +++ b/docs/user-manual/project/audit_task/SQLfile_audit/index.html @@ -4,14 +4,14 @@ SQL文件扫描 | SQLE 文档 - +
    版本:v3

    SQL文件扫描

    本节介绍SQL文件扫描的应用场景及配置方法。

    备注

    平台已支持的所有数据源类型均支持SQL文件扫描

    使用场景

    当用户需要在批量执行SQL前扫描SQL,发现潜在的安全漏洞、提高数据库性能及数据库开发质量时,可以使用SQL文件进行批量扫描。

    使用方式

    前置条件

    在后端环境中准备SQL文件

    新建智能扫描任务

    进入智能扫描任务列表,点击新建,选择SQL文件扫描任务类型。

    执行Scannerd文件

    提示

    注意:使用rpm或docker部署的情况下,scannerd通常在SQLE的bin目录下。

    示例如下:

    ./scannerd sqlFile -H127.0.0.1 -N"SQLfile" -P"10000" -J"default" -D/root/sqle/sqle/cmd/scannerd/scanners/mybatis/testdata/ -A"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcG4iOiJ0ZXN0MDcyNCIsImV4cCI6MTcyMTcyODU0NywibmFtZSI6ImFkbWluIn0.CojdTvBkr-iN_26tWI-Kr6mMnJt1NIDr-Y3v7m9ySuM"

    参数解释如下:

    • -J, --project:说明扫描任务所在项目,例如“default”;
    • -H, --host string:指定dms主机所在地址;
    • -P, --port string:指定dms所在端口;
    • -N, --name string:指定扫描任务名称,scannerd会将获得的SQL传至指定的任务池中审核;
    • -D, --dir string:指定要扫描的SQL文件路径;
    • -A, --token string:输入扫描任务凭证token;
    • -K, --skip-sql-file-audit:只上传sql,不审核sql;
    • -S, --skip-error-sql-file; 跳过无法解析的sql文件;

    获得执行结果: sqlfile_audit

    平台查看执行结果

    • 用户进入扫描任务详情,可以查看SQLw文件中已采集到的SQL信息;
    • 用户点击立即审核,可以在扫描任务报告中获取当前SQL的审核结果;
    - + \ No newline at end of file diff --git a/docs/user-manual/project/audit_task/baiduyunrds/index.html b/docs/user-manual/project/audit_task/baiduyunrds/index.html index 533ace3a..e3e8990f 100644 --- a/docs/user-manual/project/audit_task/baiduyunrds/index.html +++ b/docs/user-manual/project/audit_task/baiduyunrds/index.html @@ -4,14 +4,14 @@ 百度云RDS慢日志扫描 | SQLE 文档 - +
    版本:v3

    百度云RDS慢日志扫描

    当使用百度云RDS实例,并且想要监管实例上产生的慢SQL,可以通过创建一个百度云RDS慢日志扫描任务来实现。该任务将会定期扫描百度云RDS实例上的慢日志,并将扫描结果发送到SQLE中进行分析。

    支持的数据源类型

    • MySQL

    前置操作

    • 用户需创建双机高可用版本的百度云RDS实例;
    • 对该实例开通慢日志;
    • 已在平台添加对应数据源。

    baiduyunrds

    步骤一 开启百度云慢日志扫描类型

    在SQL管控配置中为数据源开启智能扫描,扫描类型选择“百度云慢日志扫描”,并填写以下字段信息:

    • 实例ID:填写百度云RDS实例的ID。
    • Access Key:为账号安全认证中的Access Key,用于登录百度云RDS,需要与Secret Key一同使用。
    • Access Secret Key:账号安全认证中Access Key对应的Secret Key。
    • 启动任务时拉取慢日志时间范围(单位:小时,最大7天):扫描任务读取慢日志的时间范围,单位为小时,最大范围为7天。
    • 审核过去时间段内抓取的SQL(分钟): 审核该时间段内抓取到的慢SQL。
    • RDS Open API地址:RDS的地址前缀,用以调用RDS服务,需根据实例所在区域进行填写。如当前实例在华东-上海范围,则应填写rds.fsh.baidubce.com
    • 审核规则模板:选择对应的审核规则模板;

    以下为百度云RDS Open API地址参考: baiduyunrdsurl

    点击提交,完成数据源上的百度云慢日志SQL扫描任务配置。

    步骤二 获取采集结果及审核结果

    在扫描详情中查看采集的百度云慢日志SQL信息及审核结果。

    - + \ No newline at end of file diff --git a/docs/user-manual/project/audit_task/huaweiyunrds/index.html b/docs/user-manual/project/audit_task/huaweiyunrds/index.html index ea991c85..a1427ef4 100644 --- a/docs/user-manual/project/audit_task/huaweiyunrds/index.html +++ b/docs/user-manual/project/audit_task/huaweiyunrds/index.html @@ -4,13 +4,13 @@ 华为云RDS慢日志扫描 | SQLE 文档 - +
    版本:v3

    华为云RDS慢日志扫描

    当使用华为云RDS实例,并且希望监管实例上产生的慢SQL时,可以通过创建华为云RDS慢日志扫描任务实现。该任务会定期扫描华为云RDS实例上的慢日志,并将扫描结果发送到SQLE平台进行分析。

    支持的数据源类型

    • MySQL

    前置操作

    在进行以下操作之前,请确保已完成以下步骤:

    • 创建华为云RDS实例,并获取实例的项目ID和实例ID。
    • 开启慢日志明文显示,并设置慢查询时间阈值。参考华为云用户手册
    • 获取访问密钥。访问密钥文件需要下载至本地查看。参考华为云用户手册
    • 在平台添加对应数据源。

    步骤一 开启华为云慢日志扫描类型

    在SQL管控配置中为数据源开启智能扫描,扫描类型选择“华为云慢日志扫描”,并填写以下字段信息:

    • 项目ID:实例所在项目ID;
    • 实例ID:实例ID;
    • Access Key ID:在步骤3中获取的访问密钥 ID;
    • Access Key Secret:在步骤3中获取的访问密钥Secret;
    • 启动慢日志时拉取慢日志时间范围(小时):由于开启明文显示后,华为云平台会自动删除30天前的日志,所以时间范围上限是30天;
    • 当前RDS实例所在实例:参考华为云用户手册
    • 审核规则模板:选择对应的审核规则模板;

    点击提交,完成数据源上的华为云慢日志SQL扫描任务配置。

    步骤二 获取采集结果及审核结果

    在扫描详情中查看采集的华为云慢日志SQL信息及审核结果。

    - + \ No newline at end of file diff --git a/docs/user-manual/project/audit_task/intro/index.html b/docs/user-manual/project/audit_task/intro/index.html index 713f1fed..1a16e7a5 100644 --- a/docs/user-manual/project/audit_task/intro/index.html +++ b/docs/user-manual/project/audit_task/intro/index.html @@ -4,13 +4,13 @@ 功能说明 | SQLE 文档 - +
    版本:v3

    功能介绍

    我们通过SQLE工具实现了SQL审核与上线的标准化流程。这一流程不仅提升了数据库管理的效率,而且通过自动化手段减轻了数据库管理员(DBA)在SQL上线过程中处理重复性任务的负担。

    尽管审核工单在规范化SQL上线流程方面发挥了重要作用,但它也存在一些局限性:

    • 一次性审核的局限:审核工单通常只针对单次操作进行审核。然而,上线后的SQL可能在实际业务运行中遇到性能瓶颈,这要求对业务SQL进行持续的审核与优化。
    • 发版前的挑战:在临近版本发布时,如果发现SQL存在问题,决策过程可能会受到多种因素的制约,例如问题的影响范围和项目紧急程度。这要求我们在SQL上线前,针对测试环境针对数据库运行性能进行全面的扫描和审核。

    为了弥补审核工单管理的不足,我们还引入了周期性的SQL审核任务。这种持续的审核机制可以:

    • 补充审核盲区:覆盖工单审核未能触及的业务场景,确保SQL的持续优化和性能监控。
    • 提前发现问题:在SQL上线前进行全面扫描,以便及时发现并解决潜在的性能问题,减少上线后的风险。

    通过这种综合的审核策略,我们可以更有效地维护数据库的稳定性和正确性,同时提高SQL上线的质量和效率。

    此外,企业版用户还可以通过SQL管控功能,对采集到的SQL做集中统一的处理,追溯问题SQL的产生及后续解决方式,从而实现高效的SQL管理。

    - + \ No newline at end of file diff --git a/docs/user-manual/project/audit_task/java_agent_audit/index.html b/docs/user-manual/project/audit_task/java_agent_audit/index.html index 7a142ed8..8a0c6eac 100644 --- a/docs/user-manual/project/audit_task/java_agent_audit/index.html +++ b/docs/user-manual/project/audit_task/java_agent_audit/index.html @@ -4,13 +4,13 @@ Java探针版应用程序SQL抓取【企业版】 | SQLE 文档 - +
    版本:v3

    Java探针版应用程序SQL抓取【企业版】

    本节介绍如何利用SQLE平台抓取java应用中的SQL,选取的例子是一个开源的问卷调查java应用,架构简单,上手相对容易。

    支持的数据源类型

    • All

    前置准备

    环境准备

    准备一台 linux 服务器,ubuntu即可,架构版本暂无要求

    1. 安装JAVA
    sudo apt install default-jdk
    1. 部署并启动MySQL服务

    部署java应用

    • 准备Java应用
    • 准备Java应用SQL初始化文件
    • 准备SQLE定制的JAVA agent JAR包
      提示

      JAVA agent JAR包为企业版功能,如有使用需求,请联系SQLE商业支持

    Java应用前置步骤

    1、初始化Java应用

    mysql -h127.0.0.1 -P3306 -uroot -p -e "CREATE DATABASE IF NOT EXISTS jw default character set utf8mb4 collate utf8mb4_unicode_ci"
    mysql -h127.0.0.1 -P3306 -uroot -D jw -p < init-mysql.sql

    2、将Java应用Jar包,定制jdbc上传服务器指定目录下,可以放在 /opt/surveyking 目录下,示例:

    root@ubuntu:/opt/surveyking# pwd
    /opt/surveyking
    root@ubuntu:/opt/surveyking# ls -l
    total 55652
    -rw-r--r-- 1 root root 2932784 Feb 24 08:38 sql-agent-1.0-SNAPSHOT.jar
    -rw-r--r-- 1 root root 54508748 Feb 24 08:37 surveyking-v0.3.0-beta.4.jar

    使用方式

    创建扫描任务

    在SQL管控配置中为数据源开启智能扫描,扫描类型选择“应用程序SQL抓取”,并填写以下字段信息:

    • 审核规则模板:选择对应的审核规则模板;

    点击提交,完成数据源上的应用程序SQL抓取扫描任务配置。

    启动Java应用

    提示

    以下命令需要在本地编辑替换完参数后,一次性拷贝到环境内执行

    SQLE_COLLECT_ENABLE=true \
    SQLE_BASE_URL=http://10.186.62.16:10000 \
    SQLE_TASK_NAME=jw_app \
    SQLE_TASK_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcG4iOiJqd19hcHAiLCJleHAiOjE2NzcyMjYxNzcsIm5hbWUiOiJhZG1pbiJ9.3d0pA1hiVnFEWJokSFBwCT8d1pKOYV6SViENj4GFqgI \
    SQLE_EXCLUDE_JAVA_FILE=UserServiceImpl.java \
    SQLE_LOG_FILE=/tmp/collect.log \
    java -javaagent:sql-agent-1.0-SNAPSHOT.jar \
    -jar surveyking-v0.3.0-beta.4.sqle.jar \
    --server.port=1991 \
    --spring.datasource.url=jdbc:mysql://10.186.62.18:3306/jw \
    --spring.datasource.username=root \
    --spring.datasource.password=mysqlpass \
    & >>/opt/surveyking/std.log

    参数说明(环境变量)

    • SQLE_COLLECT_ENABLE=true :是否开启SQL采集,默认不推送到SQLE只输出本地日志
    • SQLE_BASE_URL:SQLE 服务地址,格式“http://ip:port”
    • SQLE_TASK_NAME:SQLE 审核任务的名称
    • SQLE_TASK_TOKEN:审核任务的token,从SQLE页面复制
    • SQLE_PROJECT_NAME:SQLE JDBC配置:项目名
    • SQLE_LOG_FILE:指定SQLE 采集日志文件,不指定则代表输出到标准输出
    • SQLE_EXCLUDE_JAVA_FILE:忽略部分JAVA文件不插桩,主要是兼容性问题,当修改字节码失败时为了保障能运行抓取。文件按逗号分隔

    参数说明(java 参数)

    • server.port:web服务启用端口
    • spring.datasource.url:jdbc url
    • spring.datasource.username:jdbc user name
    • spring.datasource.password:jdbc password

    访问Java应用

    • 访问地址:如果配置的网页端口是1991则通过网页访问http://xx.xx.xx.xx:1991
    • 用户名:admin
    • 密码:123456
    - + \ No newline at end of file diff --git a/docs/user-manual/project/audit_task/java_application_audit/index.html b/docs/user-manual/project/audit_task/java_application_audit/index.html index 7be89584..9827ac44 100644 --- a/docs/user-manual/project/audit_task/java_application_audit/index.html +++ b/docs/user-manual/project/audit_task/java_application_audit/index.html @@ -4,13 +4,13 @@ 应用程序SQL抓取【企业版】 | SQLE 文档 - +
    版本:v3

    应用程序SQL抓取【企业版】

    本节介绍如何利用SQLE平台抓取JAVA应用中的SQL,选取的例子是一个开源的问卷调查java应用,架构简单,上手相对容易。

    支持的数据源类型

    • MySQL
    • Oracle
    • DB2
    • OceanBase for MySQL
    • PostgreSQL
    • TiDB
    • SQL Server

    前置准备

    环境准备

    准备一台 linux 服务器,ubuntu即可,架构版本暂无要求

    1. 安装JAVA
    sudo apt install default-jdk
    1. 部署并启动MySQL服务

    部署java应用

    • 准备Java应用
    • 准备Java应用SQL初始化文件
    • 准备SQLE定制的JDBC jar 包
      提示

      JDBC jar包为企业版功能,如有使用需求,请联系SQLE商业支持

    Java应用前置步骤

    1、初始化Java应用

    mysql -h127.0.0.1 -P3306 -uroot -p -e "CREATE DATABASE IF NOT EXISTS jw default character set utf8mb4 collate utf8mb4_unicode_ci"
    mysql -h127.0.0.1 -P3306 -uroot -D jw -p < init-mysql.sql

    2、将Java应用Jar包,定制jdbc上传服务器指定目录下,可以放在 /opt/surveyking 目录下,示例:

    root@ubuntu:/opt/surveyking# pwd
    /opt/surveyking
    root@ubuntu:/opt/surveyking# ls -l
    total 55652
    -rw-r--r-- 1 root root 2477925 Feb 24 08:38 mysql-connector-java-8.0.28-SQLE.jar
    -rw-r--r-- 1 root root 54508748 Feb 24 08:37 surveyking-v0.3.0-beta.4.jar

    3、替换Java应用Jar包的MySQL jdbc jar 包

    cd /opt/surveyking/
    mkdir jar
    cp surveyking-v0.3.0-beta.4.jar jar/
    cd jar/
    jar xvf surveyking-v0.3.0-beta.4.jar # 解压jar包,如果执行失败也可使用 unzip surveyking-v0.3.0-beta.4.jar 代替
    cp ../mysql-connector-java-8.0.28-SQLE.jar BOOT-INF/lib/mysql-connector-java-8.0.26.jar # 替换jdbc
    rm -rf surveyking-v0.3.0-beta.4.jar
    jar cvfM0 surveyking-v0.3.0-beta.4.sqle.jar * # 打包
    mv surveyking-v0.3.0-beta.4.sqle.jar ../
    cd ..
    rm -rf jar/

    使用方式

    创建扫描任务

    在SQL管控配置中为数据源开启智能扫描,扫描类型选择“应用程序SQL抓取”,并填写以下字段信息:

    • 审核规则模板:选择对应的审核规则模板;

    点击提交,完成数据源上的应用程序SQL抓取扫描任务配置。

    启动Java应用

    提示

    以下命令需要在本地编辑替换完参数后,一次性拷贝到环境内执行

    cd /opt/surveyking/
    SQLE_COLLECT_ENABLE=true SQLE_HOST=10.186.62.18:10000 SQLE_TASK_NAME=jw_app SQLE_TASK_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcG4iOiJqd19hcHAiLCJleHAiOjE2NzcyMjYxNzcsIm5hbWUiOiJhZG1pbiJ9.3d0pA1hiVnFEWJokSFBwCT8d1pKOYV6SViENj4GFqgI \
    java -jar surveyking-v0.3.0-beta.4.sqle.jar \
    --server.port=1991 \
    --spring.datasource.url=jdbc:mysql://10.186.62.18:3306/jw \
    --spring.datasource.username=root \
    --spring.datasource.password=mysqlpass \
    & >>/opt/surveyking/std.log

    参数说明(环境变量):

    • SQLE_COLLECT_ENABLE:是否开启SQL采集
    • SQLE_HOST=10.186.62.18:10000:SQLE 服务地址 ip:port
    • SQLE_TASK_NAME=jw_app :审核任务的名称
    • SQLE_TASK_TOKEN:审核任务的token,从SQLE页面复制
    • SQLE_PROJECT_NAME:SQLE JDBC配置:项目名

    参数说明(java 参数)

    • server.port:web服务启用端口
    • spring.datasource.url:jdbc url
    • spring.datasource.username:jdbc user name
    • spring.datasource.password:jdbc password

    访问Java应用

    • 访问地址:如果配置的网页端口是1991则通过网页访问http://xx.xx.xx.xx:1991
    • 用户名:admin
    • 密码:123456
    - + \ No newline at end of file diff --git a/docs/user-manual/project/audit_task/metadata_audit/index.html b/docs/user-manual/project/audit_task/metadata_audit/index.html index ff47015a..7f4e2864 100644 --- a/docs/user-manual/project/audit_task/metadata_audit/index.html +++ b/docs/user-manual/project/audit_task/metadata_audit/index.html @@ -4,14 +4,14 @@ 库表元数据 | SQLE 文档 - +
    版本:v3

    库表元数据

    当您需要检查已上线业务对应数据源的建表、建视图语句是否符合统一的SQL质量规范,或需要定期检查上线业务的库表变更是否符合统一的SQL质量规范时,您可以对数据源开启库表扫描,获得SQL与审核建议。

    支持的数据源类型

    • MySQL
    • DB2
    • TDSQL
    • PostgreSQL

    前置条件

    已添加对应数据源。

    步骤一 开启库表扫描类型

    在SQL管控配置中为数据源开启智能扫描,扫描类型选择“库表扫描”,并填写以下字段信息:

    • 采集周期:指定SQLE每隔多久采一次SQL
    • 是否采集视图信息:默认不采集视图信息,若开启,则将一并扫描数据源上的视图SQL;
    • 审核规则模板:选择对应的审核规则模板;

    点击提交,完成数据源上的库表SQL扫描任务配置。

    步骤二 获取采集结果及审核结果

    在扫描详情中查看采集的库表SQL信息及审核结果。 list

    后续步骤

    • 查看审核记录,查看不同时间点的审核结果,包括审核的SQL语句、审核结果。
    • 分析语句,用户可对SQL语句进行分析操作,获取优化建议。
    - + \ No newline at end of file diff --git a/docs/user-manual/project/audit_task/mybatis/index.html b/docs/user-manual/project/audit_task/mybatis/index.html index 643d2521..b5250c30 100644 --- a/docs/user-manual/project/audit_task/mybatis/index.html +++ b/docs/user-manual/project/audit_task/mybatis/index.html @@ -4,7 +4,7 @@ MyBatis扫描 | SQLE 文档 - + @@ -21,7 +21,7 @@ coding-editinfo

    编辑后点击保存,完成构建计划。

    触发构建,获得审核结果

    在构建计划中点击立即构建按钮; coding-do

    可以在在构建过程中查看构建结果,也可以在SQLE平台的扫描任务中查看审核结果。 coding-result

    - + \ No newline at end of file diff --git a/docs/user-manual/project/audit_task/processlist_audit/index.html b/docs/user-manual/project/audit_task/processlist_audit/index.html index e317f0f4..a11f16fd 100644 --- a/docs/user-manual/project/audit_task/processlist_audit/index.html +++ b/docs/user-manual/project/audit_task/processlist_audit/index.html @@ -4,14 +4,14 @@ 会话SQL扫描 | SQLE 文档 - +
    版本:v3

    会话SQL扫描

    当需要监控查询性能、识别瓶颈、以及诊断死锁或锁等待问题时,利用会话SQL智能扫描功能进行有效分析。

    支持的数据源类型

    • MySQL

    步骤一 开启会话SQL扫描类型

    在SQL管控配置中为数据源开启智能扫描,扫描类型选择“会话SQL扫描”,并填写以下字段信息:

    • 采集周期:表示SQLE对 MySQL processlist表的采集频率,SQLE将按照该时间间隔进行SQL采集。如果该值过低,会影响实例性能;
    • SQL最小执行时间(秒):表示SQLE对 MySQL processlist 的采集过滤条件,只有大于等于该时间的SQL才会被采集记录。如果为0,则表示不进行过滤;
    • 审核规则模板:选择对应的审核规则模板;

    点击提交,完成数据源上的会话SQL扫描任务配置。

    步骤二 获取采集结果及审核结果

    在扫描详情中查看采集的会话SQL信息及审核结果。 processlist-audit

    - + \ No newline at end of file diff --git a/docs/user-manual/project/audit_task/slowlog_audit/index.html b/docs/user-manual/project/audit_task/slowlog_audit/index.html index 690342be..d0e614cc 100644 --- a/docs/user-manual/project/audit_task/slowlog_audit/index.html +++ b/docs/user-manual/project/audit_task/slowlog_audit/index.html @@ -4,14 +4,14 @@ 慢日志 | SQLE 文档 - +
    版本:v3

    慢日志

    当您需要检查已上线业务是否有超过指定时长的慢SQL产生时,可以为数据源开启慢日志智能扫描。

    当前SQLE支持两种慢日志采集方式,一种由scanner采集慢日志文件中的慢查询,一种由SQLE直接采集慢查表中的慢查询,用户可在编辑页面选取需要的采集方式,您可选择需要的方式采集产生的慢查询。

    支持的数据源类型

    • MySQL

    方式一:采集慢日志表

    前置条件

    • 已添加数据源
    • 在MySQL中设置以下内容:
    set global long_query_time=1; // 需根据实际业务调整慢查询时间阈值,此处仅供参考
    set global slow_query_log=1; // 开启慢日志查询
    SET GLOBAL log_output='FILE,TABLE';// 开启 MySQL 的慢日志收集功能,并且确认将慢日志内容写入文件 mysql-slow.log 和表 mysql.slow_log
    提示

    为了优化查询性能,使用这一采集方式时,需要用户手动运行下面的SQL,将mysql.slow_log表的引擎改为MyISAM,并添加索引。

    ALTER TABLE mysql.slow_log ENGINE = MyISAM;
    ALTER TABLE mysql.slow_log ADD INDEX idx_start_time (start_time);

    步骤一:开启慢日志智能扫描类型

    在SQL管控配置中为数据源开启智能扫描,扫描类型选择“慢日志扫描”,并填写以下字段信息:

    • 采集来源:选择“从mysql.slow_log表采集”;
    • 审核规则模板:选择对应的审核规则模板;

    点击提交,完成数据源上的慢日志扫描任务配置。

    步骤二 获取采集结果及审核结果

    在扫描详情中查看从慢日志表中采集的SQL信息及审核结果。 list

    方式二:采集慢日志文件

    前置条件

    • 已添加对应数据源;
    • 修改配置文件my.cnf,在文件中添加以下内容:
    my.cnf
    slow_query_log = ON //开启慢日志
    slow_query_log_file = /var/lib/mysql/tmp_slow.log //设置慢日志文件路径
    long_query_time = 1 //设置慢查询时间阈值,当前示例时间为1s,可根据实际业务变更

    步骤一:开启慢日志智能扫描类型

    在SQL管控配置中为数据源开启智能扫描,扫描类型选择“慢日志扫描”,并填写以下字段信息:

    • 采集来源:选择“从slow.log文件采集”;
    • 审核规则模板:选择对应的审核规则模板;

    点击提交,完成数据源上的慢日志扫描任务配置。

    步骤二:执行scannerd文件

    • 复制慢日志的连接信息
    • 在数据源环境中执行scannerd文件

    执行命令示例如下:

    ./scannerd mysql_slow_log --project=default --host=127.0.0.1 --port=10000  --audit_plan_id=1  --token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcG4iOiJjNGNhNDIzOGEwYjkyMzgyMGRjYzUwOWE2Zjc1ODQ5YiIsImV4cCI6MTc1NDAzNjEyOCwiaXNzIjoiYWN0aW9udGVjaCBkbXMiLCJ1aWQiOiI3MDAyMDAifQ.gUE0fNLjAJAWXK7sPydEN8zQ96gStxa-luNTvBtIMWy --log-file /var/lib/mysql/mysql-for-test-slow.log
    提示

    注意:scannerd文件通常在SQLE的bin目录下,需将scannerd文件放在数据源环境下执行。

    参数解释如下:

    • --project:说明扫描任务所在项目,例“default”;
    • --host string:指定dms主机所在地址;
    • --port string:指定SQLE所在端口;
    • --token string:扫描任务凭证token;
    • --log-file:指定慢日志文件,scannerd从该文件中获取慢SQL;

    步骤三 获取采集结果及审核结果

    在扫描详情中查看从慢日志文件中采集的SQL信息及审核结果。

    后续步骤

    1. 分析智能扫描中出现的慢SQL:用户可以重点关注慢SQL的部分,这些SQL可能需要进行性能优化或数据库结构调整,以提升系统的响应速度。
    2. 过滤不关心的SQL:用户可以通过在sqle.black_list_audit_plan_sqls表中添加需要过滤的SQL片段,实现对scanner扫描任务中不关心的SQL的过滤。这样,在SQLE的增量和全量接口中包含了指定关键字的SQL将被自动过滤掉,减少冗余的结果展示。
    - + \ No newline at end of file diff --git a/docs/user-manual/project/audit_task/sqlmanage/index.html b/docs/user-manual/project/audit_task/sqlmanage/index.html index f83f2161..68ae9a6e 100644 --- a/docs/user-manual/project/audit_task/sqlmanage/index.html +++ b/docs/user-manual/project/audit_task/sqlmanage/index.html @@ -4,13 +4,13 @@ SQL管控 | SQLE 文档 - +
    版本:v3

    SQL全生命周期管控企业版

    SQL管控页面集中了用户在SQL审核和扫描任务中生成的SQL,当用户的SQL来源多且分散时,可以在SQL管控页面快速发现审核出问题的SQL,并将其分配给其他成员处理,或将不关心的SQL设为忽略状态,以避免遗漏问题SQL,方便追溯问题SQL的产生及后续解决方式,从而实现高效的SQL管理。如:

    • 快速发现问题SQL:在众多SQL中迅速定位到审核出问题的SQL。
    • 任务分配:将问题SQL分配给团队成员处理。
    • 忽略不关心的SQL:避免无关SQL干扰,专注于关键问题。
    • 追溯问题:方便追溯问题SQL的产生及后续解决方式。

    前置条件

    用户需要登录平台并生成审核记录,满足以下条件之一:

    • 在使用SQL快捷审核时,为SQL附加了审核标签。
    • 在SQL管控配置中为数据源开启了智能扫描,并获得采集结果。

    使用步骤

    用户点击左侧菜单栏的SQL管控标签,进入SQL管控页面。

    SQL筛选

    平台提供多种筛选方式,帮助用户快速找到符合条件的SQL:

    • SQL来源:根据SQL的来源方式进行筛选,如SQL审核、扫描任务;
    • 数据源:根据SQL所属的数据源进行筛选;
    • Schema:根据SQL所属的Schema进行筛选;
    • 审核规则等级:根据审核规则的等级进行筛选,如error、warning、notice、normal;
    • 时间范围:根据SQL生成的时间范围进行筛选;
    • SQL状态:根据SQL的状态进行筛选,如待处理、已解决、已忽略等;
    • 端点信息:根据SQL的来源端点进行筛选
    • 与我相关:根据SQL是否与当前用户相关进行筛选,可以选择只显示与当前用户有关的SQL。
    • 查看高优先级SQL:根据配置中设定的高优先级SQL标准,展示那些符合高优先级标准的SQL。

    SQL操作

    除了展示和过滤SQL,平台还提供多种SQL操作方式,帮助用户快捷处理SQL:

    • 按指纹查看SQL:支持按SQL指纹做聚合,跳转查看SQL审核列表;
    • 查看SQL执行计划:支持查看SQL分析结果,快速了解SQL的执行计划;
    • 指派负责人:可以将SQL指派给对应负责人处理;
    • 变更状态:可以将表单中的SQL标记为已解决、已忽略或已人工审核的状态;
    • 导出:可以根据当前筛选条件导出SQL管控列表的信息。

    操作结果

    通过以上步骤,用户可以使用SQL管控功能集中管理SQL,快速发现问题SQL并进行处理。

    - + \ No newline at end of file diff --git a/docs/user-manual/project/audit_task/topsql/index.html b/docs/user-manual/project/audit_task/topsql/index.html index 148f2cdc..fbc907fa 100644 --- a/docs/user-manual/project/audit_task/topsql/index.html +++ b/docs/user-manual/project/audit_task/topsql/index.html @@ -4,13 +4,13 @@ TopSQL | SQLE 文档 - +
    版本:v3

    TopSQL

    TOP SQL 语句可能会导致数据库性能下降。为此,我们提供了TOP SQL智能扫描,用以实时监控SQL性能,通过自动监察数据库中最耗费资源的 SQL 语句,减少手动分析的同时,快速定位性能瓶颈,以此提高数据库运行性能。

    支持的数据源类型

    • DB2
    • Oracle
    • OceanBase for MySQL
    • ceanBase for Oracle
    • PostgreSQL
    • 达梦

    步骤一 开启TopSQL扫描类型

    在SQL管控配置中为数据源开启智能扫描,扫描类型选择“TopSQL”,并填写以下字段信息:

    • 采集周期:表示SQLE对TopSQL的采集频率,SQLE将按照该时间间隔进行SQL采集。如果该值过低,会影响实例性能;
    • 排序字段:目前可基于总执行次数、执行时间、物理读块数、逻辑读块数、I/O等待时间进行排序
    • Top N:选择需要展示的SQL数量
    • 审核规则模板:选择对应的审核规则模板;

    点击提交,完成数据源上的TopSQL扫描任务配置。

    步骤二 获取采集结果及审核结果

    在扫描详情中查看采集的TopSQL信息及审核结果。

    提示

    对PG类型的数据源开启TOPSQ智能扫描时,PG需要保证两个前提:

    • 确保pg_stat_statements扩展已安装,参考SQL语句CREATE EXTENSION pg_stat_statemnts;
    • 将参数shared_preload_libraries的值设置为 pg_stat_statements来指定在启动时加载pg_stat_statements扩展
    docker run --name': docker run --name postgres -e POSTGRES_PASSWORD=123456 -d -p 5432:5432 -v /my/local/dir:/var/lib/postgresql/data postgres:13 -c shared_preload_libraries=pg_stat_statements
    - + \ No newline at end of file diff --git a/docs/user-manual/project/blacklist-manager/index.html b/docs/user-manual/project/blacklist-manager/index.html index 285a4e51..27cda5a9 100644 --- a/docs/user-manual/project/blacklist-manager/index.html +++ b/docs/user-manual/project/blacklist-manager/index.html @@ -4,13 +4,13 @@ 管控SQL例外管理 | SQLE 文档 - +
    版本:v3

    管控SQL例外企业版

    在企业版中,管控SQL例外功能允许用户排除那些在SQL管控中不关键的语句,例如事务控制语句(BEGIN、END等),从而减少管控面板上的不必要干扰,让运维人员专注于识别和解决潜在性能瓶颈或风险点。

    前置条件

    用户采集到的SQL中包含无关或不关心的语句,影响用户在SQL管控列表中识别和解决潜在问题。

    操作步骤

    访问管控SQL例外

    • 项目管理员可以通过点击左侧导航栏的管控SQL例外菜单进入,也可以将不关注的SQL快速添加为管控SQL例外。

    添加管控SQL例外

    • 点击列表右上角的添加管控SQL例外按钮。
    • 选择匹配模式:
      • 按关键字匹配:匹配含有关键字的SQL语句,不区分大小写。
      • 按SQL指纹匹配:通过分析SQL查询的结构特征生成唯一标识符(指纹),用于识别和比较查询。
      • 按IP匹配:匹配特定IP地址发起的SQL语句。
      • 按网段匹配:匹配特定网段内的SQL语句。
      • 按主机名匹配:匹配特定主机名的SQL语句。
      • 按数据源匹配:匹配特定数据源的SQL语句。
    • 输入描述:提供该管控SQL例外的应用场景描述。
    • 输入例外内容:输入需要排除的SQL语句或相关信息。

    查看和执行

    成功添加管控SQL例外后,您可以在当前项目中查看所有的项目管控SQL例外及其匹配模式。

    blacklist

    SQL管控列表将不再出现对应的SQL。

    - + \ No newline at end of file diff --git a/docs/user-manual/project/data_access_control/authorization_list/index.html b/docs/user-manual/project/data_access_control/authorization_list/index.html index 1cd00d7c..0f36fe64 100644 --- a/docs/user-manual/project/data_access_control/authorization_list/index.html +++ b/docs/user-manual/project/data_access_control/authorization_list/index.html @@ -4,14 +4,14 @@ 授权清单 | SQLE 文档 - +
    版本:v3

    授权清单

    通过统一分配指定权限操作用户,避免出现因业务多导致权限管理分散的困境,同时追溯权限发放原因。

    使用场景

    在数据库权限的发放过程中,通常需要进行追溯和审计,特别是对于安全要求较高的系统。授权清单功能可以追溯记录权限发放的详细信息,如授权模板、有效期、授权目的、备注等,以满足对权限发放过程的审计和跟踪需求,保障系统的安全性和合规性。

    前置条件

    在执行授权清单操作之前,请确保已完成以下步骤:

    • 已添加权限模板;
    • 已添加成员;

    操作步骤

    步骤一:进入授权清单列表并点击授权

    步骤二:填写授权基本信息

    • 选择授权模板
      • 选择权限模板
      • 设置授权有效期
    • 配置授权目的
      • 选择使用人
      • 输入授权目的或用途
      • 填写授权备注信息
    • 新建数据库连接账号
      • 输入连接账号名
      • 输入连接域
      • 输入连接密码并确认

    完成以上步骤后,点击确认,即可完成当前的授权操作。

    执行结果

    授权操作完成后,您将在授权清单列表中看到相应的执行结果。可以参考下方的示意图 auth_list

    更多操作

    除了上述的基本操作之外,还可以进行以下操作:

    • 回收权限:回收当前授权产生的数据库连接账号,绑定用户不再拥有权限模板中的数据操作能力;
    • 续期授权:延期数据库连接账号的可用时间;
    - + \ No newline at end of file diff --git a/docs/user-manual/project/data_access_control/intro/index.html b/docs/user-manual/project/data_access_control/intro/index.html index 189dd41c..95d47f43 100644 --- a/docs/user-manual/project/data_access_control/intro/index.html +++ b/docs/user-manual/project/data_access_control/intro/index.html @@ -4,13 +4,13 @@ intro | SQLE 文档 - + - + \ No newline at end of file diff --git a/docs/user-manual/project/data_access_control/permission_template/index.html b/docs/user-manual/project/data_access_control/permission_template/index.html index 5097ff91..03ceef68 100644 --- a/docs/user-manual/project/data_access_control/permission_template/index.html +++ b/docs/user-manual/project/data_access_control/permission_template/index.html @@ -4,13 +4,13 @@ 权限模板 | SQLE 文档 - +
    版本:v3

    权限模板

    权限模板支持灵活分组,按集合组织权限模板,以减少重复分配相同权限的工作量,提高权限管理效率。

    使用场景

    当需要对大量用户进行授权时,权限模板可以帮助您快速批量分配相同的权限。您只需创建一个权限模板,在模板中组合不同数据源的数据操作权限,然后将该模板应用于所需的用户。这样可以节省大量手动分配权限的时间和工作量。

    前置条件

    • 已添加数据源

    操作步骤

    步骤一:进入权限模板列表,点击添加模板

    步骤二:填写模板名称

    步骤三:填写模板数据权限

    • 选择数据源对应的业务:必选,用以确定数据源的可选范围;
    • 选择该业务下可用的数据源:必选,用以限制可操作的数据源;
    • 选择数据源下的库和表:非必选,如果不选,则对整个数据源的所有库表均有权限;
    • 选择该数据源上可用的数据操作权限:非必选,如果不选,则对整个数据库的所有数据表均有权限;

    点击保存后,可以继续向权限模板中添加数据权限,或完成当前权限模板配置。

    执行结果

    permission_template

    更多操作

    • 授权:指定拥有该模板权限的用户及数据库操作账号;
    • 类似创建:克隆当前规则模板;
    - + \ No newline at end of file diff --git a/docs/user-manual/project/dataexport/index.html b/docs/user-manual/project/dataexport/index.html index 63564e72..f1f914a7 100644 --- a/docs/user-manual/project/dataexport/index.html +++ b/docs/user-manual/project/dataexport/index.html @@ -4,7 +4,7 @@ 数据导出 | SQLE 文档 - + @@ -12,7 +12,7 @@
    版本:v3

    数据导出

    本文介绍数据导出的基本使用流程。

    使用场景

    当您需要使用数据但没有足够的权限时,可以利用数据导出功能获取需要的数据。平台通过预检查及审批流程确保数据的安全访问,并记录详细的数据导出信息,包括导出人员、导出目的及导出的数据等内容,有助于审核人全面了解数据的使用情况,从而更好地保障数据安全。

    支持的数据源类型

    • MySQL
    • PG
    • Oracle
    • SQL Server

    前置条件

    在进行以下操作之前,请先创建两个成员,分别配置其在数据源上有创建数据导出任务审批/驳回数据导出工单的权限、 userprivilege

    操作步骤

    创建数据导出工单

    要创建数据导出工单,请按照以下步骤进行操作:

    1. 以user1账号登录DMS平台,进入default项目
    2. 点击数据导出页面,点击创建导出,并填写以下内容
      • 填写工单基本信息
        • 工单名称:必填项。
        • 工单描述:必填项,填写导出原因。
      • 选择导出对象
        • 选择数据源:只能选择具有导出权限的数据源。
        • 选择数据库:选择需要导出的数据库。
      • 选择导出方式
        • 目前仅支持导出SQL结果集:需要填写SQL。
      • 选择数据导出格式
        • 目前仅支持csv格式。
    3. 审核当前导出的SQL语句。在预检查通过后,创建人可以提交导出工单。

    审批导出工单

    要审批导出工单,请按照以下步骤进行操作:

    1. 以user2账号登录DMS平台,进入导出工单列表,查看当前待审核的导出工单。
    2. 点击跳转至工单详情,查看工单的基本信息及预审核结果,审批人可以基于工单基本信息及审核结果,决定是否通过审批。
      • 如果审批不通过,审批人点击 "驳回",并填写驳回原因。
      • 如果审批通过,由工单创建人执行导出操作。

    下载导出文件

    要下载导出文件,请按照以下步骤进行操作:

    1. 以user1账号登录DMS平台,进入导出工单详情,点击执行导出。
    2. 导出成功后,工单创建人可以点击下载,获取数据文件。

    exportresult

    后续操作

    当您需要线下人工审核SQL语句,或是事后审计时,可以进入导出工单详情,下载SQL语句 exportdownload

    - + \ No newline at end of file diff --git a/docs/user-manual/project/group_member/index.html b/docs/user-manual/project/group_member/index.html index 8fd19eb7..259f7258 100644 --- a/docs/user-manual/project/group_member/index.html +++ b/docs/user-manual/project/group_member/index.html @@ -4,7 +4,7 @@ 成员/成员组管理 | SQLE 文档 - + @@ -12,7 +12,7 @@
    版本:v3

    成员/成员组管理

    本文介绍项目内添加成员、成员组的步骤,以及其他管理操作。

    前置条件

    • 项目管理员进入指定的项目;
    • 平台管理员已完成用户的添加;
    • 平台管理员已完成角色的添加;

    成员管理

    成员由项目管理员添加,只有被添加为成员后,才可查看、操作项目内资源。

    使用场景

    • 一个业务以项目的形式管理SQL工单、扫描任务等资源,若用户需要在指定项目中执行SQL工单、扫描任务等相关操作,则需要成为该项目的成员,并具有相应角色操作权限。

    添加成员

    步骤

    项目管理员点击成员标签,点击添加成员按钮;

    字段说明

    • 用户名:选择平台已添加的用户;
    • 选择是否为项目管理员:项目管理员将负责项目管理行为,例如添加数据源和成员等;
      • 若将当前成员设为项目管理员,则该成员将对项目内所有数据源拥有所有操作权限,无需额外配置权限;
      • 若未设置,则当前成员在项目内的操作权限将根据下一步添加角色与数据源的绑定获得;
    • 添加角色与数据源的绑定;
      • 添加数据源:指定当前成员能操作的数据源;
      • 添加角色:指定当前成员在该数据源上的角色权限,角色设置请参见角色管理
    • 删除角色与数据源的绑定;

    执行结果

    项目管理员可查看当前项目中添加的成员列表。 成员列表

    后续步骤

    配置项目审核流程模板:可以指定成员作为审核/上线环节的操作人,请参见审核流程模板

    更多操作

    • 编辑成员:添加成员后,项目管理员可修改成员可用的数据源及对应角色权限;
      • 限制:编辑之前产生的工单不受影响,编辑之后工单创建时将应用最新的数据源及权限对应关系;
    • 删除成员:项目管理员可删除项目中的成员;
      • 限制:若成员已不在项目内,则无权操作工单;

    成员组管理

    使用场景

    • 如果若干用户在项目内具备相同的操作权限或访问权限,可以通过将他们加入同一个成员组来配置他们对项目资源的权限。

    添加成员组

    步骤

    项目管理员点击成员组标签,点击添加成员组按钮;

    字段说明

    • 成员组名:填写成员组的名称;
    • 用户名:选择需要加入为组员的用户;
    • 选择是否为项目管理员:项目管理员将负责项目管理行为,例如添加数据源和成员等;
      • 若将当前成员设为项目管理员,则该成员将对项目内所有数据源拥有所有操作权限,无需额外配置权限;
      • 若未设置,则当前成员在项目内的操作权限将根据下一步添加角色与数据源的绑定获得;
    • 添加角色与数据源的绑定;
      • 添加数据源:指定当前成员能操作的数据源;
      • 添加角色:指定当前成员在该数据源上的角色权限,平台默认提供DEV、DBA两种角色,负责SQL语句的提交、审核及上线操作;更多角色设置请参见角色管理
    • 删除角色与数据源的绑定;

    执行结果

    项目管理员可查看当前项目中添加的成员组列表。 成员组列表

    后续步骤

    • 配置项目审核流程模板:可以批量匹配具有同一权限的成员作为审核/上线环节的操作人,,请参见审核流程模板

    更多操作

    • 编辑成员组:添加成员组后,项目管理员可修改成员组可用的数据源及对应角色权限;
      • 限制:编辑之前创建的工单不受影响,之后创建的工单将依据新的数据源及权限;
    • 删除成员组:项目管理员可删除项目中的成员组;
      • 限制:若成员组内成员已不在项目内,则无权操作工单;
    - + \ No newline at end of file diff --git a/docs/user-manual/project/instance-manager/index.html b/docs/user-manual/project/instance-manager/index.html index 670de3b8..dd13dd04 100644 --- a/docs/user-manual/project/instance-manager/index.html +++ b/docs/user-manual/project/instance-manager/index.html @@ -4,14 +4,14 @@ 数据源管理 | SQLE 文档 - +
    版本:v3

    数据源管理

    本文介绍如何在项目中进行数据源管理,包括数据源的增加、删除、编辑操作。 数据源是工单和扫描任务的实施对象,用户在平台创建的工单和扫描任务都将针对指定的数据源执行。因而项目创建后需要首先配置项目内可用的数据源。

    提示

    数据源是SQLE连库审核的对象,任何审核的场景下若可以不选数据源则代表将进行脱库审核。

    使用场景

    实际生产中,如果需要针对某个数据源下发SQL或创建扫描任务,需要首先将数据源添加至SQLE平台,测试连通成功后才可创建工单、创建扫描任务。

    添加单个数据源

    使用场景

    实际生产中,如果需要针对某个数据源下发SQL或创建扫描任务,需要首先将数据源添加至SQLE平台,测试连通成功后才可创建工单、创建扫描任务。

    前置操作

    项目管理员进入指定的项目

    操作步骤

    点击左侧导航栏的数据源菜单,进入数据源管理页面后,点击添加数据源,填写数据源相关信息

    基本信息
    • 数据源名称:命名当前新建的数据源,如:actionsky-test;
    • 数据源描述:用户可对数据源补充更多描述,便于用户通过名称+描述快速更精准地区分数据源;
    • 数据库类型:选择数据库实例对应的数据库类型,当前支持的数据库类型包括MySQL、PostgreSQL、Oracle、SQL server、DB2、TiDB、OceanBase For MySQL、OceanBase For Oracle、Mycat、TDSQL for InnoDB、达梦;
    • 数据库地址:输入数据库实例的连接地址,支持IP地址、域名两种方式;
    • 数据库端口:添加数据源时根据数据源类型自动切换默认端口;
    • 连接用户:输入数据库实例的连接用户,SQLE在执行SQL审核以及SQL上线时,会通过该连接用户访问数据库实例及下发SQL;
    • 密码:输入数据库实例的连接用户密码;
    配置信息
    • 审核规则模板:审核规则模板将用于创建工单时的审核、扫描任务的审核、SQL查询的审核;
    • 运维时间:如果配置了运维时间, 工单将只能在运维时间内上线(立即上线和定时上线都受此影响), 支持配置多个运维时间, 默认无运维时间,即不限制上线时间;
    • SQL查询是否需要审核:默认不审核;如用户选择开启该功能,则用户在SQL工作台中提交的SQL语句,将匹配审核规则模板进行SQL审核操作;
    • 运行查询的最高审核等级:只有开启 SQL查询的审核功能才生效;支持四种审核等级:normal、notice、warn、error,如设置运行查询的最高审核等级为warn,则触发了warn等级规则以上的SQL语句将报错,并不予执行;未触发warn等级规则以上的SQL语句将被执行;

    执行结果

    数据源添加成功后,可在数据源列表查看新增的数据源信息。

    数据源列表

    批量添加数据源

    为提高平台初始化效率,用户可通过上传CSV文件,快速批量导入多个数据源,减少手动添加工作量。此功能支持数据源的预检和连通性测试,确保数据源的有效性和可用性。

    使用场景

    • 平台初始化时需导入大量数据源。
    • 定期批量更新或添加数据源。
    • 多项目数据源的集中管理和批量操作。

    前置操作

    • 项目管理员进入指定的项目。
    • 项目管理员/平台管理员进入项目列表。

    操作步骤

    点击右上角的批量导入数据源按钮,进入批量导入数据源页面。

    获取导入模板
    • 点击下载导入模板,获得下载文件。
    填写数据源信息

    模板中包含的字段与添加单个数据源中的信息保持一致。

    上传修改后的模板文件

    导入后,SQLE平台将校验字段是否填写有误:

    • 如导入文件没有问题,将在文件下方提示文件校验成功;
    • 如导入文件有问题,将在文件下方提示文件校验失败,并自动下载标注了校验问题的文件,用户可以直接在文件中结合报错信息进行修改。
    批量测试数据源连通性

    点击按钮后,平台将使用文件中的连接信息进行连通性测试:

    • 如根据文件中的数据源连接信息均能连通,将在按钮下方提示连接成功;
    • 如根据文件中的数据源连接信息存在连接不成功的,将在按钮下方提示连接不成功的数据源名称。
    点击导入

    平台将按照文件中的数据源信息进行批量添加。

    执行结果

    数据源添加成功后,可在数据源列表查看新增的数据源信息。

    后续步骤

    • 创建审核规则:添加数据源后,可针对指定数据源创建适用的审核规则,请参见审核规则模板管理
    • 添加成员/成员组:添加数据源后,需要引入成员/成员组对数据源进行操作,请参见成员/成员组管理

    更多管理功能

    • 编辑数据源:点击数据源列表页面对应数据源条目后的编辑按钮,可以修改指定数据源。
      • 限制:数据源名称及数据库类型不支持修改,其他信息均可修改
    • 删除数据源:点击数据源列表页面对应数据源条目后的删除按钮,可以删除指定数据源。
      • 限制:若数据源上还有相应工单未完成,则该数据源暂时不可删除
    • 连通性测试:点击更多按钮,选择连通性测试,测试是否可以用当前的数据源地址及用户密码成功连入数据源。
    - + \ No newline at end of file diff --git a/docs/user-manual/project/instance_syn/index.html b/docs/user-manual/project/instance_syn/index.html index 7f700874..5fc25b59 100644 --- a/docs/user-manual/project/instance_syn/index.html +++ b/docs/user-manual/project/instance_syn/index.html @@ -4,7 +4,7 @@ 外部数据源同步【企业版】 | SQLE 文档 - + @@ -14,7 +14,7 @@ sip

    3.针对需要同步的实例组添加项目标签

    为需要同步的数据源组,添加业务标签,SQLE同步时,将依据项目标签值,将实例同步至指定项目中,并赋予指定业务属性。 tag

    操作步骤

    • 进入SQLE平台,展开数据源管理,点击外部数据源同步,进入同步任务页面
    • 添加同步任务,填写以下相关信息
      • 来源:目前仅支持DMP平台;
      • 地址:默认格式为http://ip:port;
      • 数据源类型:选择需要同步的实例对应的数据源类型,如MySQL;
      • 审核规则模板:选择数据源使用的规则模板;
      • 设置同步间隔:SQLE平台将按照指定的同步时间执行数据源同步任务;
    • 点击提交 按钮,SQLE会立即进行一次数据源同步。

    操作结果

    同步成功后进入对应项目,查看数据源列表页面,可以看到DMP上配置了SIP的数据源组已经被添加到SQLE平台,可以对这个数据源进行创建工单或创建扫描任务等操作。

    syn-result instance-syn

    后续操作

    管理员可编辑或删除同步任务,也可在同步周期之外,手动执行同步任务。

    - + \ No newline at end of file diff --git a/docs/user-manual/project/intro/index.html b/docs/user-manual/project/intro/index.html index 2126115e..5f562849 100644 --- a/docs/user-manual/project/intro/index.html +++ b/docs/user-manual/project/intro/index.html @@ -4,7 +4,7 @@ 功能介绍 | SQLE 文档 - + @@ -12,7 +12,7 @@
    版本:v3

    功能介绍

    自2.22.11.0版本起,平台引入项目管理概念,与SQL审核相关的资源均以项目的形式进行资源隔离。创建工单前,需要由项目管理员设置好项目内部必要的资源环境,包括项目使用的数据源、用户、流程模板、规则模板、白名单信息等,随后,项目成员才可在项目内提交工单并审核上线,或设置智能扫描任务。 本文介绍项目管理的使用场景以及如何以项目形式管理SQL工单、扫描任务等项目资源。在进行项目管理之前,需要由管理员进行创建项目,具体操作请参见创建项目

    说明

    提示

    社区版仅支持一个默认项目,项目管理员是admin,企业版可创建多个项目,有创建项目权限的用户可以创建项目,创建项目后,可指定其他项目成员为项目管理员。

    使用场景

    企业内容存在多个业务,且各个业务之间的数据源、工单、扫描任务可能由不同团队在负责,希望不同团队之间的数据相互隔离。此时,可在平台内以不同项目的行为去管理多个业务资源(数据源、工单、扫描任务等)。

    项目内资源调度

    资源调度 项目内的主要业务为工单审核及智能扫描任务审核。围绕工单及智能扫描任务,涉及到数据源管理、审核规则模板管理、白名单管理、审核流程管理、成员管理。

    以工单审核为例

    工单是为了满足下发SQL时审核、上线环节的流程化需求。

    工单的完整生命周期包括创建、审核、上线,其中涉及数据源、审核流程、审核规则模板、白名单的操作。

    备注
    • 审核流程:一个项目可绑定一个审核流程,该审核流程将应用于该项目下的所有工单审核。
    • 数据源:工单作用于具体的数据源,创建工单时,需要指定一个或多个数据源。
    • 审核规则模板:创建工单时,平台会基于该数据源应用的审核规则模板,对成员提交的SQL语句进行审核,满足应用的审核规则后,才可创建工单。
    • 白名单:创建工单时,若存在不需要审核的SQL语句,可将该SQL语句添加至白名单,提交该SQL时平台将不做审核。

    以智能扫描任务为例

    智能扫描任务是为了满足长期的SQL审核,平台支持的扫描任务类型包括库表元数据、TopSQL、慢日志、Mybatis扫描、应用程序SQL抓取及其他自定义扫描任务。

    智能扫描任务的完整生命周期包括创建、查看扫描任务报告,其中涉及数据源、审核规则模板、白名单的操作。

    备注
    • 数据源:智能扫描任务作用于具体的数据源,创建智能扫描任务时,需要指定一个数据源。
    • 审核规则模板:创建的智能扫描任务,将基于该任务下数据源应用的审核规则模板,审核任务中的SQL语句,并生成报告。
    • 白名单:创建扫描任务时,若存在不需要审核的SQL语句,可将该SQL语句添加至白名单,执行扫描任务时,将略过该语句。

    项目内资源权限

    资源权限

    项目内由成员执行工单及扫描任务。

    前置条件

    • 需要将平台创建的用户/用户组引入项目,成为项目成员/项目成员组后,才可在项目内进行操作。平台用户/用户组的创建,请参见平台用户管理
    • 引入项目成员/成员组时,需要指定成员/成员组在对应数据源上的操作角色,成员/成员组将继承角色对应的操作权限。角色的配置,请参见平台角色管理

    资源权限说明

    • 一个项目内可引入多个成员/成员组
    • 成员/成员组将依据自身绑定的数据源及对应角色权限,对指定数据源进行指定的操作。
    • 如当前项目引入了成员user1,并在user1上绑定了数据源local,并指定角色为DEV(创建工单),那么user1在当前项目中可执行的操作为:针对数据源local创建工单/管理自己创建的工单。
    - + \ No newline at end of file diff --git a/docs/user-manual/project/operation_records/index.html b/docs/user-manual/project/operation_records/index.html index 04e75569..7cdc6aff 100644 --- a/docs/user-manual/project/operation_records/index.html +++ b/docs/user-manual/project/operation_records/index.html @@ -4,13 +4,13 @@ 操作记录 | SQLE 文档 - +
    版本:v3

    操作记录

    使用场景

    SQLE平台提供操作记录,当审核/上线产生问题时,用户需要从操作行为判定问题责任方。此时,用户可以使用平台的操作记录功能,查看平台行为的操作人、操作时间。

    入口

    用户点击操作与审计标签,进入操作记录页面,查看权限范围内可见的操作记录。

    • 用户可对操作记录进行筛选,查看符合条件的操作记录;
    • 用户也可在当前筛选条件下,导出平台操作记录,用以线下审计;

    操作记录

    更多操作

    SQLE会定时回收已产生的操作记录,目前该过期时间默认为90天。如果用户需要自定义过期时间,可以在全局配置中修改。

    - + \ No newline at end of file diff --git a/docs/user-manual/project/project_create/index.html b/docs/user-manual/project/project_create/index.html index df779bd5..506ffb4d 100644 --- a/docs/user-manual/project/project_create/index.html +++ b/docs/user-manual/project/project_create/index.html @@ -4,7 +4,7 @@ 创建项目【企业版】 | SQLE 文档 - + @@ -12,7 +12,7 @@
    版本:v3

    创建项目【企业版】

    本文介绍如何在SQLE平台创建项目。 SQLE平台通过引入项目实现业务、资源的隔离,项目内创建的工单及扫描任务都将带有项目属性,仅项目成员可查看、操作。

    使用场景

    企业内容存在多个业务,且各个业务之间的数据源、工单、扫描任务可能由不同团队在负责,希望不同团队之间的数据相互隔离。此时,可在平台内以不同项目的行为去管理多个业务资源(数据源、工单、扫描任务等)。

    前置条件

    创建新项目时,需要用户拥有创建项目的权限,这部分内容可通过管理员账号配置,请参见平台用户管理,或由平台管理员直接创建项目。

    操作步骤

    拥有项目创建权限的用户/平台管理员点击页面顶部菜单栏项目,选择查看所有项目,点击列表右上角创建项目按钮

    • 输入项目名称。如:actionsky;
    • 输入项目描述。如:处理爱可生项目的数据源、工单及扫描任务;
    • 点击提交;

    执行结果

    • 项目创建完成后,可在项目列表中查看当前用户创建的项目。
    • 选中指定项目,可进入项目详情页面,查看并管理项目内的数据源、成员、审核规则模板、审核流程模板等内容。

    项目列表

    提示

    项目创建人在创建项目后会成为项目成员,承担项目管理员的身份,支持指定其他成员成为项目管理员,一个项目可对应多个项目管理员。

    后续步骤

    项目创建后,用户在进行创建工单、创建扫描任务的核心业务之前,还需要做如下操作:

    • 初始化工单、扫描任务的实施对象即数据源,具体操作请参见数据源管理
    • 初始化工单、扫描任务的使用人员以及使用人员的操作权限即项目成员,具体操作请参见成员管理
    • 初始化工单、扫描任务的审核规则模板,一个项目内可为不同数据源定义不同的规则模板,具体操作请参见规则模板管理
    • 若存在无需审核的SQL,可在白名单管理中初始化白名单,请参见白名单管理; 初始化工单的项目审核流程模板,一个项目内所有工单共用一个审核流程,具体操作请参见流程模板管理

    更多管理功能

    项目管理包含编辑及删除操作。

    • 项目编辑:项目创建人/平台管理员可在项目列表编辑项目条目信息,可编辑项为项目描述。
    • 项目删除:项目创建人/平台管理员可在项目列表删除项目条目。
      • 限制:删除项目前,需要确保项目下没有进行中的工单,才可成功删除。
      • 影响:删除项目后,该项目下的数据源、工单及扫描任务信息都将被删除。
    • 冻结项目:若有项目需要临时停用,项目创建人/平台管理员可在项目列表点击冻结项目。
      • 限制:冻结项目前,需要确保项目内没有未完成的工单。
      • 影响:冻结项目后,项目内所有操作均不可执行。
      • 后续:用户可点击启用操作,重新启用该项目。
    - + \ No newline at end of file diff --git a/docs/user-manual/project/push-rule/index.html b/docs/user-manual/project/push-rule/index.html index 249d105d..9ac21696 100644 --- a/docs/user-manual/project/push-rule/index.html +++ b/docs/user-manual/project/push-rule/index.html @@ -4,13 +4,13 @@ 推送规则配置 | SQLE 文档 - +
    版本:v3

    推送规则配置

    用户可以为每个项目设置特定的推送规则,包括工单变更和高优先级SQL的通知,确保关键信息不遗漏,同时加速问题识别与处理,优化决策流程。

    前置操作

    • 确保在全局设置中已开启特定的消息推送能力,如飞书、钉钉、企业微信等。
    • 确保成员权限已正确配置,以避免权限问题影响推送功能。
    • 确保已在SQL管控配置中设定了高优先级SQL的标准,以便正确识别和推送相关通知。

    操作步骤

    1. 访问推送规则设置

    • 在项目配置中点击推送规则选项。

    2. 开启推送功能

    • 推送规则页面,选择需要开启的推送功能项,目前支持配置工单推送及SQL管控问题。
    • 使用crontab格式配置自定义的推送频率,以满足不同的时间需求。
    • 配置消息接收人,可以选择根据权限匹配的成员,或者直接指定特定的成员。

    3. 保存并测试

    • 完成配置后,保存设置。
    • 进行测试以确保推送功能按预期工作。可以通过模拟工单状态变更或高优先级SQL问题来测试推送效果。

    后续操作

    • 利用推送功能,关注工单状态变更,及时进行工单审批及上线操作。
    • 利用推送功能,关注SQL管控中标记为高优先级的SQL,避免潜在的性能问题。
    - + \ No newline at end of file diff --git a/docs/user-manual/project/quick_audit/index.html b/docs/user-manual/project/quick_audit/index.html index c31da7d4..5d985b97 100644 --- a/docs/user-manual/project/quick_audit/index.html +++ b/docs/user-manual/project/quick_audit/index.html @@ -4,14 +4,14 @@ SQL审核 | SQLE 文档 - +
    版本:v3

    SQL快捷审核

    本文介绍平台的SQL审核功能,该功能可以帮助用户快速审核SQL并了解优化建议。

    使用场景

    当用户需要快速审核SQL并了解可优化点时,可以使用平台的SQL审核功能,快速获取审核结果。相较于SQL工单,SQL审核更注重用户快速自检,其目的是获取审核结果。而SQL工单除了获取平台的审核结果外,更侧重SQL的标准化上线。

    前置条件

    用户需要进入项目页面才能使用SQL审核功能。

    操作步骤

    用户点击左侧菜单栏的SQL审核标签,进入SQL审核列表页面,点击'新建'按钮。

    输入审核标签

    • 用户可以使用标签来区分SQL的性质、来源等特性;
    • 平台默认提供两种标签,用户可根据需要新建标签;

    选择审核模式

    平台默认提供两种审核模式

    • 静态审核:脱库审核,无需选择数据源和数据库,但需要选择SQL对应的数据源类型。
    • 动态审核:连库审核,需要指定数据源、数据库;

    输入待审核SQL

    平台当前提供5种审核方式,以满足不同的SQL场景。

    • 在线输入:直接在界面上输入SQL。
    • 上传XML文件:上传包含SQL的XML文件。
    • 上传SQL文件:上传SQL文件进行审核。
    • 上传ZIP文件:上传包含多个SQL文件的ZIP文件进行审核。
    • 配置GIT仓库:从GIT仓库中获取SQL文件进行审核。

    点击立即审核,获得审核结果

    完成SQL输入后,用户点击立即审核按钮,获得平台给出的审核建议

    执行结果

    审核完成后,用户可以查看审核结果并在SQL审核列表中查看生成的审核记录。 quick-audit

    后续操作

    添加了标签的SQL审核记录将进入SQL管控列表页面,用户可以在管控列表页面统一管理SQL。

    - + \ No newline at end of file diff --git a/docs/user-manual/project/rule-template-manager/index.html b/docs/user-manual/project/rule-template-manager/index.html index 45a96adf..caa6c2eb 100644 --- a/docs/user-manual/project/rule-template-manager/index.html +++ b/docs/user-manual/project/rule-template-manager/index.html @@ -4,13 +4,13 @@ 审核规则模板 | SQLE 文档 - +
    版本:v3

    规则模版

    本文将介绍如何管理项目中的审核规则模板。

    规则模版分为全局模版和项目模版:

    • 全局模版 为超级管理员配置,所有项目都可见和使用;
    • 项目模版 由超级管理员或者项目拥有者配置,仅在项目内使用

    使用场景

    SQLE平台提供不同数据库类型的审核规则,是在长期实践中依据数据库特性总结出的一些规范。用户可以根据需要,将这些规则进行聚合,生成不同的规则模板,通过审核规则模板为不同的数据源配置不同的审核规则,用以应对不同场景、不同业务的审核需求。

    提示

    每个规则模版内可独立配置规则的级别和参数

    前置条件

    项目管理员进入指定的项目

    创建规则模板

    入口

    项目管理员点击左侧导航栏规则模板菜单,点击创建规则模板按钮。

    步骤一:输入基本信息

    • 模板名称:命名当前规则模板,须以字母开头,只能包含字母、数字、中划线和下划线。如:test
    • 模板描述:补充描述模板的其他信息。如:用于测试规则模板触发的告警等级
    • 数据库类型:选择该规则模板应用的数据库类型,当前支持的数据库类型可参考数据源管理

    步骤二:选择要启用/禁用的规则

    • 启用/禁用规则
    • 编辑规则告警等级:当前可设置项为普通、提示、警告、告警
    • 编辑规则参数默认值

    步骤三:提交规则模板

    执行结果

    成功创建自定义审核规则模板后,项目管理员可查看已创建的自定义规则模板及其对应的数据库类型。

    审核规则模板

    后续步骤

    • 设置数据源的审核规则模板:用户可为不同数据源设置相同或者不同的审核规则模板,具体操作请参见数据源管理
    • 创建工单:工单中SQL的审核将依据该数据源配置的审核规则模板,请参见工单说明
    • SQL管控配置:SQL管控中采集的SQL将依据配置中应用的审核规则模板,请参见SQL管控配置

    更多操作

    • 导入规则模板:可以导入其他项目中形成的规则模板文件,支持以csv、json格式导入规则模板内容。
    • 导出规则模板:导出当前选中的规则模板,以csv、json格式下载规则模板内容。
    • 编辑规则模板:编辑规则模板的基本信息及应用的规则。
    • 删除规则模板:删除自行创建的规则模板。
      • 限制:当已有数据源绑定了该规则模板,该规则模板不可被删除。
    • 克隆规则模板:克隆当前的模板,克隆的规则模版只会继承源模版所有启用的规则、以及变更过的规则等级和阈值。克隆出的新规则模版的模版名称等基本信息需要手动填写。
    - + \ No newline at end of file diff --git a/docs/user-manual/project/whitelist-manager/index.html b/docs/user-manual/project/whitelist-manager/index.html index ea058dd4..e8445aec 100644 --- a/docs/user-manual/project/whitelist-manager/index.html +++ b/docs/user-manual/project/whitelist-manager/index.html @@ -4,14 +4,14 @@ 审核SQL例外管理 | SQLE 文档 - +
    版本:v3

    审核SQL例外企业版

    在企业版中,SQLE提供了一个强大的功能——审核SQL例外,它允许用户在特定情况下忽略SQL规范审核中的规则。这项功能特别适用于那些存在不规范之处但暂时无法解决的SQL语句。

    添加在SQL审核审核SQL例外中的语句,在提交SQL规范审核时,不受审核规则的约束。

    提示

    审核SQL例外目前支持两种方式匹配SQL:字符串匹配和SQL指纹匹配

    • 按字符串匹配:精确匹配整个SQL查询,包括所有字符、空格和注释。
    • 按SQL指纹匹配:通过分析SQL查询的结构特征生成唯一标识符(指纹),用于识别和比较查询。

    前置条件

    对SQL进行审核时,触发了高等级的规则告警,但是暴露的SQL问题并非当前能够解决,需要暂时忽略。

    操作步骤

    访问审核SQL例外

    • 项目管理员可以通过点击左侧导航栏的审核SQL例外菜单进入。

    添加审核SQL例外

    • 点击列表右上角的添加审核SQL例外按钮。
    • 选择匹配模式:
      • 选择字符串匹配或SQL指纹匹配。
    • 输入描述:提供该审核SQL例外的应用场景描述。
    • 输入SQL语句:输入需要添加的SQL语句。

    查看和执行

    成功添加审核SQL例外后,您可以在当前项目中查看所有的项目审核SQL例外及其匹配模式。

    whitelist

    审核对应的SQL语句时,如果匹配到审核SQL例外,审核结果处将出现审核SQL例外的提示。 whitelist

    - + \ No newline at end of file diff --git a/docs/user-manual/project/workflow-template-manager/index.html b/docs/user-manual/project/workflow-template-manager/index.html index 3daf3bd1..bfd7618b 100644 --- a/docs/user-manual/project/workflow-template-manager/index.html +++ b/docs/user-manual/project/workflow-template-manager/index.html @@ -4,14 +4,14 @@ 审核流程模板 | SQLE 文档 - +
    版本:v3

    流程模版

    本文介绍项目中的审核流程模板管理。

    SQLE平台应用审核流程模板来规范项目内工单审核、上线的流程,项目管理员可配置审核涉及的节点、上线节点,及对应的操作用户。

    提示

    一个项目有且仅有一个审核流程模板。项目创建后会初始化一个默认模版,用户可根据实际情况调整。

    警告

    修改流程模版仅对之后的工单有效,之前的工单流程步骤不变

    使用场景

    一个业务团队中,开发需要在指定数据源上执行SQL,上线的SQL需要符合DBA约定了的安全以及性能规范。因此,SQLE为工单场景提供了不同人员之间的协作工作流,即审核流程。

    前置条件

    • 项目管理员进入指定的项目;
    • 项目管理员已添加项目成员/成员组;

    配置审核流程

    项目管理员点击左侧导航栏流程模板菜单, 点击修改当前审批流程模板按钮

    设定模板的基本信息

    设置允许创建工单的最高审核等级

    当前提供四种审核等级,包括:

    • 普通normal
    • 提示notice
    • 告警warn
    • 错误error

    若设置“运行查询的最高审核等级”为告警warn,则审核结果小于等于warn的SQL都可以执行.

    设置流程节点

    审核流程自工单发起开始,通过设置的审核步骤后,最后以执行上线结束

    第一步 工单发起

    这一步骤通常指代项目成员创建工单

    第二步 工单审核

    配置审核节点后,对应审核操作人在该步骤可以执行审核通过或驳回操作

    • 选择审核人类型,可以选择指定审核人或匹配拥有数据源审核权限的成员
    • 添加步骤描述:用以补充说明步骤信息
    • 添加审核步骤:审核流程模板最多可设置4个审核节点,也可不设置审核步骤
    提示
    • 若选择指定审核人
      • 需要项目管理员指定项目成员
      • 最少需要添加一个指定人,最多只能添加三个指定人
      • 指定的审核人可以没有工单审核权限
    • 若选择匹配拥有数据源审核权限的成员
      • 将按实例匹配数据源上拥有审核权限的成员
      • 如果创建工单时没有任何用户拥有此数据源工单审核权限, 则项目管理员将会被指定为工单审核人

    第三步 工单上线:执行人在该步骤可以执行上线或驳回操作。

    • 选择审核人类型,当前提供两种方式:指定上线人或匹配拥有数据源上线权限的成员
    • 添加步骤描述
    提示
    • 若选择指定审核人
      • 需要项目管理员指定项目成员
      • 最少需要添加一个指定人,最多只能添加三个指定人
      • 指定的上线人可以没有工单上线权限
    • 若选择匹配拥有数据源上线权限的成员
      • 将按实例匹配数据源上拥有上线权限的成员
      • 如果创建工单时没有任何用户拥有此数据源工单上线权限, 则项目管理员将会被指定为工单上线人

    第四步 提交审核流程模板

    提交审核流程后,流程修改之前创建的工单仍以提交工单时的审核流程执行,流程修改后的创建的工单将以当前的审核流程执行流转。

    执行结果

    提交审核流程模板后,可查看当前设置的审批流程模板涉及的步骤节点,及各步骤的审核人。 审核流程模板

    后续步骤

    创建工单:创建审核流程模板后,成员可进入项目中创建工单,请参见:创建工单

    - + \ No newline at end of file diff --git a/docs/user-manual/project/workflow/audit-workflow/index.html b/docs/user-manual/project/workflow/audit-workflow/index.html index 49a6114f..af2aabb6 100644 --- a/docs/user-manual/project/workflow/audit-workflow/index.html +++ b/docs/user-manual/project/workflow/audit-workflow/index.html @@ -4,7 +4,7 @@ 审核工单 | SQLE 文档 - + @@ -13,7 +13,7 @@ 自动审核通常在创建工单时执行,本节主要介绍人工审核部分。

    使用场景

    实际生产中会存在业务变更、业务上线,比如初始化构建业务库、跑批等,当工单创建后,通常需要审核人员执行审批操作,审批过程中,审批用户可选择审核通过或全部驳回。

    前置条件

    工单已被创建。

    操作步骤

    步骤一 查看待审核的工单

    • 入口一:您可在dashboard中查看待自己审核的工单
    • 入口二:进入项目的工单列表,筛选工单状态为待审核,查看项目内待审核的工单

    步骤二 点击待审核的工单名称,进入查看工单详情

    工单详情页信息包含以下几个方面:

    • 工单基础信息:包括工单名称、工单创建人、工单创建时间及工单描述;
    • 工单进度:查看当前工单的执行进度,及工单整体流经的流程节点,流程节点与审核流程模板中设置的节点保持一致;
    • 工单审核结果查看:
      • 概览:查看工单的整体概况信息,显示工单整体应用的数据源及审核情况
      • 按数据源查看:按数据源查看数据源上的SQL及其审核结果,并查看分析结果,也可下载审核报告、下载SQL语句、去重SQL;

    步骤三 审核通过或驳回工单

    • 审核通过:成员查看工单详情后,若审核通过,可点击审核通过按钮,完成审核;
    • 全部驳回:若审核不通过,可点击全部驳回按钮,并填写驳回原因,工单将返回至工单创建人处;

    执行结果

    • 审核通过:若点击审核通过,工单将按照审核流程模板流转至下一操作节点,状态变更为待审核或待上线; approve
    • 全部驳回:若点击全部驳回,工单状态将变更为已驳回,工单进度栏将提示提交的驳回原因,工单将返回至创建人处。 deny

    后续步骤

    • 审核工单:若工单涉及其他审核流程节点,工单将继续流转至下一审核节点审核
    • 上线工单:若工单不涉及其他审核流程节点,工单将流转至上线人处执行上线,可参考上线工单
    - + \ No newline at end of file diff --git a/docs/user-manual/project/workflow/create-workflow/index.html b/docs/user-manual/project/workflow/create-workflow/index.html index cc3a59c7..8c9c8895 100644 --- a/docs/user-manual/project/workflow/create-workflow/index.html +++ b/docs/user-manual/project/workflow/create-workflow/index.html @@ -4,7 +4,7 @@ 创建工单 | SQLE 文档 - + @@ -12,7 +12,7 @@
    版本:v3

    创建工单

    工单是SQLE提供的在线化SQL上线方式。研发人员可通过创建工单,提请需要审批的SQL语句。

    使用场景

    实际生产中会存在业务变更、业务上线,比如初始化构建业务库、跑批。此时,需要针对某个数据库执行一批SQL。用户可通过SQLE创建工单,输入SQL语句或者上传SQL脚本。

    前置条件

    • 项目管理员已添加数据源;

    操作步骤

    步骤一:填写工单基本信息

    创建工单前,需要为工单指定唯一的工单名称,并填写工单说明。

    • 填写工单名称:
      • 工单名称支持中英文;
      • 若未填写,平台将根据使用的数据源及添加时间组合填充工单名称;
    • 填写工单描述:输入工单描述信息,限3000个字符;

    步骤二:上传SQL语句并审核

    需要填写工单中涉及的SQL语句,执行审核操作,SQLE会根据数据源配置的审核规则模板,自动进行SQL语句的规则审核,并在线反馈审核结果。

    选择数据对象

    • 选择数据源:表示当前SQL最终会应用到哪个数据源;
      • 社区版:一个工单内仅支持选择一个数据源;
      • 企业版:一个工单内支持添加多个数据源;
    • 选择数据库:选择要执行SQL的数据库,相当于执行 use 语句;

    选择SQL模式

    当添加多个数据源时,可设置是否选择相同SQL;

    • 使用相同SQL模式,
      • 限制:数据源的数据库类型须相同;
      • 效果:对不同数据源下发相同SQL;
    • 若不使用相同SQL模式
      • 效果:对不同数据源下发不同SQL;

    选择SQL语句上传方式

    目前在工单流程中,平台提供三种上传方式,包括在线输入SQL语句、上传SQL文件、上传ZIP文件;

    • 具体区别和使用方法可以参考SQL审核中的审核方式一节;由于通过XML文件获取的SQL无法创建工单,因此在SQL工单审核中不再支持XML文件上传方式。
    备注

    上传ZIP文件时,支持指定解析顺序,目前支持按文件前缀/后缀升序排序。

    此外,用户在上线环节仍可手动调整ZIP文件内SQL文件的上线顺序。

    选择上线模式

    当SQL以文件类型上传时,用户可以选择按SQL模式或文件模式上线。

    • SQL模式:当您需要对单个SQL语句或多个SQL语句进行细粒度的管理和上线时,可以选择SQL模式,上传的SQL文件将被拆分为独立的SQL语句;
    • 文件模式:当您希望将整个文件作为一个单元进行上线操作,或者文件中的SQL语句之间存在依赖关系时,选择文件模式,上传的SQL文件将被作为一个整体进行处理;
    备注

    目前支持Oracle、PG、MySQL类型的数据源以文件模式上线。

    点击审核

    • 点击审核,显示平台审核结果;
    提示

    在线输入SQL的场景下,平台支持对输入框中的SQL进行美化,以此提高SQL可读性。

    注:当前支持SQL美化的数据源类型包括:

    • MySQL
    • DB2
    • SQL Server
    • Oceanbase For MySQL
    • Oracle
    • PostgreSQL

    步骤三:查看审核结果

    将根据数据源不同,展示不同数据源下的SQL审核结果。 审核结果由以下几部分组成:

    • 数据源标签:显示当前SQL操作的数据源,当有多个数据源时,可切换数据源标签,查看不同数据源上的审核情况;
    • 数据源上SQL的整体审核通过率、审核结果评分及操作的数据库;
    • 数据源上每条SQL的审核结果,包括
      • SQL语句:查看原始SQL
      • SQL所属文件及所在行数:快速定位问题SQL;
      • 审核结果:查看SQL触发的规则及规则等级;
        • 点击SQL及审核结果栏,可以在右侧抽屉中查看完整信息;
        • 在GIT仓库审核及ZIP文件审核时,可以查看SQL具体的来源路径;
      • SQL分析:企业版用户支持查看SQL分析结果;
    • 功能区:
      • 下载审核报告:查看当前数据源下审核的sql语句及其审核结果;
      • 下载SQL语句:下载文件,可查看当前数据源下审核的SQL语句及其审核结果;
      • 设置是否去重:若SQL语句结构一致,去重后将仅显示去重后的SQL;
    审核通过率计算方式
    审核通过率=正常sql/sql总数
    审核结果等级为notice,warn,err的sql均为非正常sql
    审核结果评分计算方式
    1.Error以上级别SQL出现率 = Error级别SQL/SQL
    2.Warn以上级别SQL出现率 = (Error级别SQL+ Warn级别SQL) /SQL
    3.Warn以上级别SQL出现率 = (Error级别SQL+ Warn级别SQL+ Notice级别SQL) /SQL
    4.总分 = 审核通过率 x 30 +
    (1 - Error以上级别SQL出现率) x 15 +
    (1 - Warn以上级别SQL出现率) x 10 +
    (1 - Notice以上级别SQL出现率) x 5 +
    (Error以上级别SQL出现概率 == 0 ? 15 : 0) +
    (Warn以上级别SQL出现概率 == 0 ? 10 : 0) +
    (Notice以上级别SQL出现概率 == 0 ? 5 : 0) +
    (Error以上级别SQL出现概率 <0.1 ? 5 : 0) +
    (Warn以上级别SQL出现概率 <0.1? 3 : 0) +
    (Notice以上级别SQL出现概率 <0.1 ? 2 : 0)

    备注: 三元表达式 ==> ( 条件 ? 如果条件为真则为此值 : 如果条件为假则为此值 )

    步骤四:点击创建工单

    完成创建后,进入工单列表,即可看到该工单显示为待审核。

    执行结果

    创建工单后,可在工单列表查看已创建的所有工单。 list

    后续步骤

    • 审核工单:工单创建完成后,将依据审核流程模板的设定,流转至指定的审核成员处,审核成员需登录后进行审核操作,详情可参见审核工单
    • 导出工单:当用户需要审计当前已创建的工单时,可选择筛选条件后,点击工单列表的导出工单按钮,以csv格式导出满足条件的工单信息。
    • 上线到其他数据源:当需要在开发、测试、预发布等多个阶段逐步验证并部署SQL脚本时,可以通过将当前工单上线到其他数据源实现,减少在不同环境中重复上传和部署的工作量,同时避免了手动重复上传可能引入的错误,确保上线SQL的一致性和准确性。
    - + \ No newline at end of file diff --git a/docs/user-manual/project/workflow/exec-workflow/index.html b/docs/user-manual/project/workflow/exec-workflow/index.html index 25bdb7cc..39acc3c5 100644 --- a/docs/user-manual/project/workflow/exec-workflow/index.html +++ b/docs/user-manual/project/workflow/exec-workflow/index.html @@ -4,14 +4,14 @@ 上线工单 | SQLE 文档 - +
    版本:v3

    上线工单

    本章详细介绍用户如何进行上线。

    • 从数据源角度,支持多数据源同时上线、单数据源分别上线;
    • 从上线时间角度,支持立即上线、定时上线;
    • 从上线方式角度,支持平台直接上线,也支持后台执行后,线上标记为人工上线;

    使用场景

    实际生产中上线环节也会存在业务变更等诸多情况,除了对工单做整体上线操作外,还存在以下需求:

    • 需要根据数据源分别上线;
    • 需要避开业务高峰期,在指定时间上线;
    • 已在后台执行SQL,需要线上标记为人工上线;

    为此,SQLE平台也提供了多种上线方式,满足用户的上线需求。

    前置条件

    工单状态为待上线;

    操作步骤

    步骤一 进入待上线的工单

    • 方式一:上线操作人可在dashboard中点击“需上线”标签,查看当前需要上线的工单;
    • 方式二:上线操作人也可在项目的工单列表中,筛选工单状态为“待上线”的工单,查看当前需要上线的工单;

    步骤二 确认工单是够可以上线

    • 当上线操作人判定工单中存在不合规、性能问题等SQL语句时,则可点击全部驳回,让工单创建人修正后再次进入审核流程。
    • 当上线操作人判定工单可以上线,进入步骤三

    步骤三 设置工单上线

    根据使用场景,区分为以下四种工单上线方式;

    1.批量立即上线

    针对一个工单内涉及多个数据源,且多个数据源需要同时立即上线的,点击批量上线,平台将对工单内涉及的所有数据源执行上线操作;

    2.单个数据源立即上线

    点击立即上线后,平台将立即连入指定数据源,并执行SQL变更;

    3.单个数据源定时上线

    点击定时上线,并设置上线时间,平台将于指定时间上线SQL; 用户也可取消定时上线,重新设置上线方式。

    4.标记为人工上线

    针对已经线下执行过的工单SQL,用户可点击标记为人工上线按钮,切换工单状态;

    提示

    当工单以文件模式上线ZIP文件时,用户可以调整ZIP文件内SQL文件的执行顺序。

    备注

    针对上线中的工单,用户可点击“中止上线”按钮,中断上线流程,以避免当前的上线操作影响正常业务。

    执行结果

    result

    - + \ No newline at end of file diff --git a/docs/user-manual/project/workflow/intro/index.html b/docs/user-manual/project/workflow/intro/index.html index 2a83d8f1..9cde7bda 100644 --- a/docs/user-manual/project/workflow/intro/index.html +++ b/docs/user-manual/project/workflow/intro/index.html @@ -4,14 +4,14 @@ 功能说明 | SQLE 文档 - +
    版本:v3

    功能说明

    很多公司通常设有 DBA(Database administrator) 这个职位,他们负责在系统上运行数据库,执行备份,执行安全策略等日常数据库运维的工作。其中,DBA一项重要的工作是规范研发人员在应用程序中使用的 SQL 语句。

    场景举例:

    产品在迭代过程中,某个表需要新增一个字段,这会涉及到改表操作。 当前处理方法:DBA 依据数据库规范评估SQL语句的合理性。如果评估没有问题,则将修改操作应用到线上数据库。如果公司对于这类操作比较严格,在上线前,可能还需要经过层层审批。所有上线流程中的人都同意后,再将修改操作应用到数据库。

    由此引出的问题:

    • SQL上线牵涉范围较广,缺乏规范化流程支撑
    • 工单运转节点不透明,需要DBA去手动通知

    定位

    SQLE审核工单的出现主要是为了解决上述整个过程中的规范化、流程化的问题。

    • 通过引入审核规则模板,在人工审核前,首先利用规范化的DBA审核经验进行平台预审,提高整体审核效率
    • 通过引入审核流程模板,将SQL语句的流程节点透明化,并明确操作权限归属,提供规范化流程支持

    流程

    process

    状态说明
    待审核创建完的工单自动进入「待审核」状态;该状态的工单将由项目流程设置的审核人进行审核。
    待上线工单的每一道审核流程均执行通过后,工单状态将由「待审核」状态变更为「待上线」状态;上线人此时可选择立即上线或批量驳回,或针对具体数据源进行立即上线或定时上线。设置定时上线后,工单状态仍为「待上线」,到达预设的上线时间后,变更为「正在上线」状态;设置定时上线但还未到达上线时间的工单,可以由上线人取消定时上线,可以再次对工单进关闭、定时上线/立即上线等操作。
    正在上线当上线人进行立即上线,工单会短暂的进入「正在上线」阶段,该阶段的时间取决于SQL是否上线完毕;当上线人选择定时上线,定时上线的工单到预设时间会自动执行SQL上线,此时工单也会由「待上线」状态变更为「正在上线」状态;SQL上线遇到阻塞的工单会一直处于「正在上线」状态。
    上线成功SQL上线成功的工单会进入「上线成功」状态;上线成功标志工单流转结束,无法再对工单进行操作。
    上线失败SQL上线失败的工单会进入「上线失败」状态;上线失败同样标志工单流转结束,无法再对工单进行操作
    已驳回「待审核」的工单可以由每级的审批人进行审核,若审核不通过,被驳回,工单将进入「已驳回」状态;此状态的工单可以由创建人或者超管用户进行修改并重新提交工单,流程将被重置。
    已关闭状态为「待审核」、「待上线」或「已驳回」的工单可以由创建人或者超管用户在任何时刻关闭工单,「已关闭」状态标志工单流转结束,无法再对工单进行操作;已经进入上线流程的工单无法关闭。
    - + \ No newline at end of file diff --git a/docs/user-manual/project/workflow/version-management/index.html b/docs/user-manual/project/workflow/version-management/index.html index 8a3459ac..3e048c2c 100644 --- a/docs/user-manual/project/workflow/version-management/index.html +++ b/docs/user-manual/project/workflow/version-management/index.html @@ -4,13 +4,13 @@ 版本控制 | SQLE 文档 - +
    版本:v3

    版本控制

    SQLE的版本管理功能适用于以下场景:

    1. 大规模数据库升级项目
    • 管理多个环境(如开发、测试、生产)的数据库变更
    • 跟踪复杂的脚本执行进度
    1. 日常数据库维护
    • 组织和追踪例行的数据库修改
    • 直观查看各阶段数据变更情况差异
    1. 协调团队的数据库开发
    • 避免冲突并确保变更的顺序执行
    1. 合规性和审计要求
    • 记录所有数据库变更的历史
    • 提供详细的变更日志以满足审计需求

    前置操作

    在开始使用版本控制功能之前,请确保:

    • 已准备不同发布环境的数据源;
    • 已为团队成员分配数据源上的创建工单、审批工单权限;

    步骤一 创建新版本

    目标:建立一个新的版本记录,定义版本信息和涉及的环境。

    • 进入"版本管理"页面,点击"添加版本"按钮
    • 填写版本信息:
      • 输入版本名称(如:v1_2_3)
      • 输入版本描述
    • 设置版本涉及的发布阶段:
      • 添加需要的环境(如:开发、测试、预生产、生产)
      • 添加每个环境中涉及的数据源
    • 点击"保存"按钮确认配置
    提示

    版本名称建议使用有意义的标识,如功能名称加版本号,便于后续管理。

    步骤二 将变更添加至版本中

    目标:将具体的数据库变更关联到创建的版本中。

    • 在版本详情页第一个阶段中,新增该版本中涉及的变更
    • 选择变更类型:
      • 新建工单:创建一个新的变更请求
      • 关联现有工单:将已存在的工单关联到此版本
    • 点击"确认",添加变更到版本
    提示
    • 仅能够关联这个阶段的数据源

    步骤三 跟踪版本进度

    目标:监控变更的执行进度,确保按计划进行。

    • 进入版本详情页面,查看当前版本涉及的阶段及每个阶段中的变更工单完成进度
    • 上线:一个阶段中的多个工单需按顺序执行上线
      • 当顺序中的工单具备上线条件时,工单操作人/项目管理员可以点击上线按钮,完成变更工单上线
    • 发布:同一工单需要顺序发布到不同环境进行验证
      • 当一个工单在当前阶段已完成上线验证,需要发布到下一个阶段时,工单操作人/项目管理员可以点击发布按钮,将当前变更内容发布到下一阶段数据源验证
    提示
    • 上线:指在当前环境执行变更
    • 发布:指将已验证的变更推进到下一个环境

    verison-manage

    步骤四 完成版本发布

    目标:确认所有变更已完成,并锁定版本。版本锁定后,将无法继续在版本中发布变更。

    • 确保所有环境的所有变更都已执行完毕
    • 在版本列表点击锁定按钮,确认并锁定当前版本
    - + \ No newline at end of file diff --git a/docs/user-manual/sql-workbench/how-to-configure/index.html b/docs/user-manual/sql-workbench/how-to-configure/index.html index 36274b83..60853c9b 100644 --- a/docs/user-manual/sql-workbench/how-to-configure/index.html +++ b/docs/user-manual/sql-workbench/how-to-configure/index.html @@ -4,7 +4,7 @@ 配置方法 | SQLE 文档 - + @@ -15,7 +15,7 @@ config 3.完成设置,登录管理员账号成功,则初始化成功 config

    步骤四 配置完成后检查

    • 确认角色正确:[访问管理] - [角色] 处应当只有admin和user两个角色

    • 确认没有冲突用户:[访问管理] - [用户] 处不应当有名称格式为 sqle-xxx的用户存在, 这会与SQLE自动创建的用户冲突

    提示

    用admin 跳转CloudBeaver的时候,SQLE会在CloudBeaver创建一个新的用户叫sqle-admin ,同时把这个用户缓存到数据库里,每次跳转先去数据库里找这个用户,如果已经存在,就会拿这个用户直接去登陆cb

    配置SQLE

    步骤一 修改SQLE配置文件中CloudBeaver参数

    打开SQLE配置文件,配置文件一般位于SQLE工作目录的etc目录下, 文件名一般为config.yaml

    参数字段参数说明
    cloudbeaversql工作台参数

    子参数在下一级, 需要注意缩进

    参数字段参数说明
    hostcloudbeaver IP地址
    portcloudbeaver访问端口
    admin_usercloudbeaver管理员账户
    admin_passwordcloudbeaver管理员密码

    配置文件内容参考:

    sqleconfig

    步骤二 重启SQLE

    需要重启以使配置项生效。

    步骤三 检查SQLE是否已成功集成CloudBeaver

    SQLE重启后进入平台,点击打开SQL工作台,若成功跳转,则说明当前SQLE平台已成功集成CloudBeaver。

    提示
    • 平台管理员账户需要有 [添加/修改/删除][用户/实例/权限] 的权限
    • SQLE集成CloudBeaver后请勿使用CloudBeaver的管理员账户直接操作CloudBeaver的用户/实例/权限

    常见问题

    如果在配置CloudBeaver时,出现跳转不正确等问题,可参考如何解决CloudBeaver跳转不正确的问题

    - + \ No newline at end of file diff --git a/docs/user-manual/sql-workbench/how-to-quick-deploy/index.html b/docs/user-manual/sql-workbench/how-to-quick-deploy/index.html index e5dc058b..131d8973 100644 --- a/docs/user-manual/sql-workbench/how-to-quick-deploy/index.html +++ b/docs/user-manual/sql-workbench/how-to-quick-deploy/index.html @@ -4,13 +4,13 @@ 使用定制包快速搭建环境 | SQLE 文档 - +
    版本:v3

    使用定制包快速搭建环境

    SQLE在原有CloudBeaver release_22_2_0 分支的基础上, 增加了对OceanBase 和 TiDB 的支持, 用户无需再手动配置环境,可直接使用SQL工作台功能。

    cb

    定制分支与原分支区别详情

    • 支持并默认启用 OceanBase 驱动
    • 支持并默认启用 TiDB 驱动
    • 默认访问路由调整为 /sql_query, 便于与SQLE集成
    • 默认会话超时时间调整为12小时(之前是30分钟)
    • 移除了默认创建的 PG 演示实例和 SQLite 演示实例
    • docker镜像名调整为 actiontech/sqle-cloudbeaver:22_2_0
    • 优化打包方式, 大幅提高打包效率
    • 默认主题改为暗色

    项目地址

    定制包下载地址

    https://github.com/actiontech/cloudbeaver/releases/tag/sqle.22.2.0

    使用说明

    编译和运行项目

    与原项目编译运行方式保持一致

    编译docker镜像

    进入项目的 deploy/docker 目录, 然后执行 ./make-docker-container.sh

    运行docker镜像

    • 方式一: 进入项目的 deploy/docker 目录, 然后执行 ./run-docker-container.sh
    • 方式二: 手动启动镜像, 镜像参数和 原项目镜像参数 保持一致

    已有CloudBeaver环境升级为定制环境

    CloudBeaver程序目录下应当有以下几个文件

    cb

    将CloudBeaver程序目录下的conf目录和workspace目录移动到定制CloudBeaver程序目录下(覆盖原目录), 随后停止旧CloudBeaver, 运行新CloudBeaver即可

    - + \ No newline at end of file diff --git a/docs/user-manual/sql-workbench/how-to-use/index.html b/docs/user-manual/sql-workbench/how-to-use/index.html index 18a5ba0f..9444d970 100644 --- a/docs/user-manual/sql-workbench/how-to-use/index.html +++ b/docs/user-manual/sql-workbench/how-to-use/index.html @@ -4,13 +4,13 @@ 使用定制包快速搭建环境 | SQLE 文档 - +
    版本:v3

    使用定制包快速搭建环境

    项目地址

    Release: https://github.com/actiontech/cloudbeaver/releases

    使用说明

    方式一 使用定制包启动

    以23-2-2版本为例:

    下载定制包

    定制包下载地址https://github.com/actiontech/cloudbeaver/releases/tag/v23.2.2

    安装与启动

    unzip cloudbeaver-23-2-2-sqlev3.zip
    cd cloudbeaver
    ./run-server.sh

    方式二 使用定制Docker镜像启动(推荐)

    docker run -d --restart unless-stopped --name cloudbeaver --privileged -it -p 8978:8978 actiontech/cloudbeaver:latest

    升级现有CloudBeaver环境至定制环境

    确保CloudBeaver程序目录下包含以下文件:

    • conf目录
    • workspace目录

    将现有CloudBeaver程序目录下的confworkspace目录移动到定制CloudBeaver程序目录下(覆盖原目录)。随后停止旧CloudBeaver,运行新的CloudBeaver即可。

    - + \ No newline at end of file diff --git a/docs/user-manual/sql-workbench/introduction/index.html b/docs/user-manual/sql-workbench/introduction/index.html index e8f21059..b0a19bfc 100644 --- a/docs/user-manual/sql-workbench/introduction/index.html +++ b/docs/user-manual/sql-workbench/introduction/index.html @@ -4,7 +4,7 @@ 功能说明 | SQLE 文档 - + @@ -14,7 +14,7 @@ error

    审核拦截场景

    假设数据库包含重要的交易信息。为了防止不当查询导致数据被删除,因此需要设置一个拦截审核机制,识别高危的SQL操作,保障数据库数据安全。

    步骤一 SQLE平台配置用户及角色

    • 创建一个用户A;
    • 创建一个有SQL查询权限的角色:SQL查询;

    步骤二 SQLE平台配置数据库实例审核等级

    进入项目,创建/修改一个数据源实例A, 在配置中开启SQL工作台查询审核,并设置运行查询的最高审核等级;

    参数名参数含义
    SQL工作台查询是否需要审核只有开启此项,才会在执行SQL查询时进行审核
    运行查询的最高审核等级如果审核等级低于或等于这个等级将会放行, 高于这个等级将无法执行

    步骤三 SQLE平台配置成员权限

    • 在项目内添加成员A,并设置A在实例test上有SQL查询的角色;

    步骤四 登录CloudBeaver

    切换成员A账号后,点击SQL工作台跳转CloudBeaver,SQLE将会自动使用当前SQLE用户登录CloudBeaver。

    警告

    若当前用户无SQL查询权限,则无权登录。

    步骤五 下发SQL

    选择需要操作的数据源,并输入SQL语句点击运行,可查看SQL查询结果

    操作结果

    审核失败的SQL将会被拦截, 并报出错误, 可以点击详情查看错误详情 error

    按要求修改SQL, 再次执行, 如果审核通过将会执行当前SQL success

    权限控制场景

    假设公司需要确保开发团队和业务分析师只能访问他们工作所需的数据,无法直接修改原始数据,所有对生产数据的变更都经过严格审批,可以对用户数据库操作进行精细化访问控制,确保用户只能执行其被授权的操作。

    步骤一 SQLE平台配置用户及角色

    • 创建一个用户A;
    • 创建一个拥有SQL查询权限的角色:SQL查询;
    • 创建一个拥有创建工单权限的角色:创建工单;

    步骤二 SQLE平台配置成员权限

    • 在项目内添加数据源
      • 实例1:testread,连接账号仅拥有读取权限;
      • 实例2:testwrite,连接账号拥有读写权限;
    • 在项目内添加成员A,并设置A的权限为
      • 在实例testread上有SQL查询的角色;
      • 在实例testwrite上有创建工单的角色;

    步骤三 登录CloudBeaver

    切换成员A账号后,点击SQL工作台跳转CloudBeaver,SQLE将会自动使用当前SQLE用户登录CloudBeaver。

    • 可以看到有实例testread(因为在这个实例上具备SQL查询权限);
      • 但由于连接账号只有读取权限,所以无法通过CloudBeaver进行数据变更;
    • 无法看到实例testwrite(因为在这个实例上不具备SQL查询权限);
      • 但可以对实例testwrite创建变更工单,提交数据变更申请。
    - + \ No newline at end of file diff --git a/docs/user-manual/sys-configuration/configuration/index.html b/docs/user-manual/sys-configuration/configuration/index.html index 7be3d2f8..58e60c4b 100644 --- a/docs/user-manual/sys-configuration/configuration/index.html +++ b/docs/user-manual/sys-configuration/configuration/index.html @@ -4,14 +4,14 @@ 全局配置 | SQLE 文档 - +
    版本:v3

    全局配置

    SQLE支持管理员对平台基础配置进行统一管理,目前支持修改的配置项包括:

    • 已完成的工单自动过期时间;
    • 操作记录过期时间;
    • URL地址前缀;

    已完成的工单自动过期时间

    使用场景

    SQLE会定时回收已完成的工单,目前该过期时间默认为30天。如果用户需要自定义过期时间,可在全局配置中修改。

    填写范例

    • 进入全局配置页面,点击修改
    • 点击已完成的工单过期时间输入框;
    • 输入预期的过期时间,例如:360小时;
    • 点击提交,保存配置;
    • 此时查看项目工单列表,已完成15天以上的工单将被删除;

    操作记录过期时间

    使用场景

    SQLE会定时回收已产生的操作记录,目前该过期时间默认为90天。如果用户需要自定义过期时间,可在全局配置中修改。

    填写范例

    • 进入全局配置页面,点击修改
    • 点击操作记录过期时间输入框;
    • 输入预期的过期时间,例如:2小时;
    • 点击提交,保存配置;
    • 此时查看平台操作记录,仅显示2个小时内产生的操作行为;

    URL地址前缀

    使用场景

    配置消息推送或流程对接后,用户可以从外部应用程序中直接查看待操作提示。此时,如果用户需要跳转到SQLE,进一步查看工单详细信息,则可以在全局配置中更改URL地址前缀,以满足访问需求。

    填写范例

    • 进入全局配置页面,点击修改
    • 点击URL地址前缀输入框;
    • 输入URL前缀,格式为http://ip:port,例如:http://localhost:10000 ;
    • 点击提交,保存配置;
    • 创建一条工单,待审批人在第三方应用中可查看工单链接,点击链接可快速跳转至SQLE平台; configuration-url
    - + \ No newline at end of file diff --git a/docs/user-manual/sys-configuration/customize/index.html b/docs/user-manual/sys-configuration/customize/index.html index ed37a18a..d22dddbc 100644 --- a/docs/user-manual/sys-configuration/customize/index.html +++ b/docs/user-manual/sys-configuration/customize/index.html @@ -4,13 +4,13 @@ 个性化设置【企业版】 | SQLE 文档 - +
    版本:v3

    个性化设置【企业版】

    SQLE支持对网站logo及标题进行自定义设置,满足企业用户的个性化需求。

    使用场景

    若用户对企业一致性有需求,需要变更所使用的网站LOGO及标题,以增加企业辨识度时,可以使用平台的个性化设置进行变更。

    操作步骤

    • 用户点击系统设置,选择个性化设置
    • 编辑个性化标题:用户点击个性化标题后的编辑icon,输入新名称,回车键保存后,页面标题将即时变更;
    • 编辑个性化logo:用户点击上传及更新icon后,登录页logo将变更为所选图片;
      • 限制:图片大小不可超过102,400 Bytes;

    customize

    - + \ No newline at end of file diff --git a/docs/user-manual/sys-configuration/intro/index.html b/docs/user-manual/sys-configuration/intro/index.html index ea56c9aa..afdf493d 100644 --- a/docs/user-manual/sys-configuration/intro/index.html +++ b/docs/user-manual/sys-configuration/intro/index.html @@ -4,13 +4,13 @@ 功能说明 | SQLE 文档 - +
    版本:v3

    功能说明

    系统设置中可配置的内容包括全局配置、登录对接、流程对接、消息推送。

    • 全局配置:当前可配置工单过期时间及外部URL;
      • 工单失效时间:平台会定期清理已完成的工单,管理员可自定义工单过期的时间;
      • URL地址前缀:当使用流程对接时,通常由外部平台访问SQLE工单详情,需要配置URL地址前缀,配置能访问SQLE的URL地址信息;
    • 登录对接:用户除使用SQLE账号登录平台,也可使用LDAP及OAuth2.0的方式实现对接登录,可参考登录对接
    • 流程对接:使用流程对接,可在外部工作平台审批工单,目前支持钉钉审批及飞书审批,可参考流程对接
    • 消息推送:使用消息推送,可将工单状态变更推送到外部工作平台,目前支持对接邮箱、企业微信、飞书、Webhook的方式,可参考消息推送
    - + \ No newline at end of file diff --git a/docs/user-manual/sys-configuration/login_syn/index.html b/docs/user-manual/sys-configuration/login_syn/index.html index 03197f09..950bba90 100644 --- a/docs/user-manual/sys-configuration/login_syn/index.html +++ b/docs/user-manual/sys-configuration/login_syn/index.html @@ -4,14 +4,14 @@ 登录对接 | SQLE 文档 - +
    版本:v3

    登录对接

    当前登录对接已实现LDAP方式及Oauth2.0方式

    入口

    管理员账号,点击更多按钮,点击系统设置,跳转系统设置页面后,点击“对接登录”标签

    推送方式

    LDAP

    功能说明

    SQLE中支持通过配置的方式接入LDAP系统, 如同其他系统一样接受统一的用户管理, 以便于管理员管理SQLE中的用户, 也使得员工无需在使用一套公司内通用账号密码的同时单独记录SQLE的账号密码。 在SQLE中, 如果正确配置并启用了LDAP功能, 用户就可以在登录界面使用LDAP中记录的账号密码进行登录, SQLE会在员工第一次登录时同步此员工的账号和邮箱, 并在以后的登录中均通过LDAP校验此账户

    使用场景

    当组织配置了LDAP对接登录系统时,平台管理员可进行相关配置。

    前置操作

    已配置LDAP

    操作步骤

    点击修改,选择启用LDAP

    • LDAP服务器地址:用于LDAP登陆时SQLE找到LDAP服务器的位置
    • LDAP服务器端口:用于LDAP登陆时SQLE找到LDAP服务的工作端口
    • 连接用户DN:当用户登录时需要先使用管理用户登录到LDAP中查找出登录用户在LDAP中的DN, 再使用查找出的DN和登录用户填写的密码进行LDAP登录校验
    • 连接用户密码:连接用户DN登录时的密码
    • 查询根DN:用于限定SQLE中LDAP登录的作用范围
    • 用户属性名:用于LDAP用户登录时查询登录用户的DN, LDAP中此属性对应的值也将用作此用户第一次登录SQLE自动注册时的用户名
    • 用户邮箱属性名:SQLE将根据此属性名从LDAP中获取到用户的邮箱, 并将此邮箱用于此用户第一次登录SQLE自动注册时的用户邮箱

    后续操作

    修改后用户即可通过LDAP账号登录SQLE平台

    OAuth 2.0【企业版】

    功能说明

    SQLE中支持通过配置的方式接入OAuth 2.0系统, 如同其他系统一样接受统一的用户管理, 以便于管理员管理SQLE中的用户, 也使得员工无需在使用一套公司内通用账号密码的同时单独记录SQLE的账号密码

    在SQLE中, 如果正确配置并启用了OAuth 2.0功能, 用户就可以在登录界面使用第三方登录, SQLE会在员工第一次登录时要求用户绑定或自动创建一个SQLE用户, 并在以后的登录中可以使用OAuth 2.0用户登录, 也可以用绑定的SQLE用户账号密码登录

    使用场景

    当组织配置了OAuth 2.0对接登录系统时,平台管理员可进行相关配置。

    前置操作

    已配置OAuth 2.0

    操作步骤

    点击修改,选择启用OAuth 2.0

    • 应用ID:应用的唯一标识, 从要对接的平台申请 , 在OAuth2.0认证过程中,appid的值即为oauth_consumer_key的值
    • 应用密钥:appid对应的密钥,访问用户资源时用来验证应用的合法性。在OAuth2.0认证过程中,appkey的值即为oauth_consumer_secret的值
    • 外部访问SQLE的地址:格式为 http(s)://ip:port
    • oauth2登录授权页面地址:格式类似于 http(s)://ip:port/xxx
    • oauth2 access_token 获取地址:格式类似于 http(s)://ip:port/xxx
    • oauth2 user id 获取地址:格式类似于 http(s)://ip:port/xxx
    • 请求资源范围:此范围由验证服务器定义
    • access_token放置位置:SQLE会在获取用户ID时将access_token放在这个key对应的value中, 此参数会作为get请求的参数发送给用户ID获取地址
    • 用户ID保存位置:SQLE会尝试使用此key从第三方平台的响应中解析出用户ID,用户ID应当为唯一ID
    • 登录按钮文字:用于登录页面按钮提示
    • 自动创建并绑定用户:若开启,在通过OAuth2登陆时,若该用户未绑定SQLE用户,SQLE则会根据从OAuth2服务端获取的用户id创建SQLE账户,并且不会跳转到绑定界面,而是进入SQLE主界面
    提示

    当仅允许内网访问SQLE服务时,请确保回调地址的后缀为"/v1/oauth2/callback"。

    后续操作

    启用后SQLE登录界面出现其他方式跳转登录入口,点击,可跳转至对应登录页面

    - + \ No newline at end of file diff --git a/docs/user-manual/sys-configuration/message_syn/index.html b/docs/user-manual/sys-configuration/message_syn/index.html index c8d6877a..73d3d25e 100644 --- a/docs/user-manual/sys-configuration/message_syn/index.html +++ b/docs/user-manual/sys-configuration/message_syn/index.html @@ -4,7 +4,7 @@ 消息推送 | SQLE 文档 - + @@ -18,7 +18,7 @@ example
  • 当t1审核通过后,成员admin作为待上线人, admin手机号绑定的飞书账号下,收到一则待上线的工单通知; example
  • 当admin上线成功后,工单创建人将收到一则工单上线成功的消息; example
  • 根据以上示例,用户可了解飞书消息推送的部分场景。

    - + \ No newline at end of file diff --git a/docs/user-manual/sys-configuration/process_syn/index.html b/docs/user-manual/sys-configuration/process_syn/index.html index 2df64ad9..6620de88 100644 --- a/docs/user-manual/sys-configuration/process_syn/index.html +++ b/docs/user-manual/sys-configuration/process_syn/index.html @@ -4,7 +4,7 @@ 流程对接 | SQLE 文档 - + @@ -25,7 +25,7 @@ dingding-telconfig

    打开全局配置,配置SQLE的URL地址,配置URL地址后,用户可从飞书跳转访问SQLE工单详情页面; globalurl

    利用飞书进行审批

    当发生工单变化时,工单关联成员可在对应飞书账号中收到通知,并进行相应的审批操作; dingding-flow

    - + \ No newline at end of file diff --git a/docs/user-manual/sys-configuration/webhook/index.html b/docs/user-manual/sys-configuration/webhook/index.html index f7f17e17..2c68008a 100644 --- a/docs/user-manual/sys-configuration/webhook/index.html +++ b/docs/user-manual/sys-configuration/webhook/index.html @@ -4,14 +4,14 @@ webhook配置 | SQLE 文档 - +
    版本:v3

    webhook配置

    Webhook是用户定义的自定义HTTP回调。它们通常由事件触发,例如SQLE中存在工单状态的变化,则会自动向用户配置的webhook URL发送HTTP请求。

    使用场景

    当用户配置了自定义API服务,想要在API服务中实时获取工单执行状态时,可在系统设置中配置webhook服务。在SQLE中配置回调地址后,工单状态一旦发生变更,即可在API服务中获取状态通知信息,无需定时登录SQLE平台以查询结果。

    提示

    当前会触发通知的事件有:

    • 有新工单被创建
    • 工单审核被通过
    • 工单审核被驳回
    • 工单被成功上线
    • 工单上线失败

    前置操作

    用户需在使用的API服务中生成用于接收回调通知的webhook url。

    备注

    当前webhook url仅支持http格式。

    操作步骤

    1. 以平台管理员账号登录, 进入系统设置-消息推送,选择webhook配置,并点击修改;
    2. 选择启用webhook;
    3. 填写webhook url:用于工单消息推送的 API 地址;
    4. 填写最大重试次数:默认3次,取值范围0-5。如果推送存在失败,每一个事件请求将最多连续3次执行推送,如3次都失败,则不再推送本次事件;
    5. 填写重试间隔:默认1秒,取值范围1-5。如果推送存在失败,重试时将以1s的时间间隔进行重试;
    6. 填写Token:云服务在发送通知时使用的访问令牌,参考规范:https://datatracker.ietf.org/doc/html/rfc6750;
    7. 提交保存配置;

    后续步骤

    用户点击“测试”,如配置正确,能在API服务端收到正确的调用测试信息: "This is a SQLE test notification\nIf you receive this message, it only means that the message can be pushed".

    接口文档

    SQLE POST 请求格式
    POST / HTTP/1.1
    Host: 192.168.21.34:8000
    Accept-Encoding: gzip
    Authorization: Bearer test123
    Content-Length: 239
    User-Agent: Go-http-client/1.1

    {"event":"workflow","action":"create","timestamp":"2023-05-18T15:45:25+08:00","payload":{"workflow":{"project_name":"test_project","workflow_id":"1658637666259832832","workflow_subject":"test_workflow","workflow_status":"wait_for_audit"}}}
    • "event":当前取值恒为 "workflow"(目前SQLE只支持工单通知);
    • "action":可能的取值有 ["create", "approve", "reject", "exec_success", "exec_failed"]。分别对应「工单创建」、「审核通过」、「审核驳回」、「上线成功」、「上线失败」;
    • "timestamp":表示请求发出的时间,RFC3339 格式;
    • "payload":表示该请求的主要业务内容,目前仅支持工单;
    • "workflow":表示该工单的当前信息,与 sqle 后端数据库中记录保持一致;

    注意事项

    • 用户配置的 token 会被放置在请求 Header 中的 Authorization 字段。参考规范:https://datatracker.ietf.org/doc/html/rfc6750 。SQLE对token字段没有任何限制。需要接受端根据自身情况决定是否使用 token;
    • 接收请求的服务端在收到请求后,需要返回 200 响应。否则 sqle 会打印返回 body 中的文本信息。
    • 在发送测试请求时,请确保接收请求的服务端运行正常。否则可能出现如下问题:
    {
    "code": 0,
    "message": "ok",
    "data": {
    "send_error_message": "Post \"http://192.168.21.34:8000\": dial tcp 192.168.21.34:8000: connect: connection refused"
    }
    }
    - + \ No newline at end of file diff --git a/docs/user-manual/user-manager/account/index.html b/docs/user-manual/user-manager/account/index.html index 84636861..fe1f5403 100644 --- a/docs/user-manual/user-manager/account/index.html +++ b/docs/user-manual/user-manager/account/index.html @@ -4,13 +4,13 @@ 个人中心 | SQLE 文档 - +
    版本:v3

    个人中心

    个人中心页面提供以下功能:

    • 修改邮箱:允许您更新个人账户绑定的邮箱地址。
    • 修改企业微信userid:允许您更新与企业微信关联的用户ID。
    • 修改手机:允许您更新个人账户绑定的手机号码。
    • 生成个人访问token:允许您生成用于访问个人账户的访问令牌。

    使用场景

    当您需要修改个人账户信息和生成访问令牌时,可以进入个人中心编辑。

    入口

    1. 登录SQLE平台
    2. 点击右下角头像图标,选择个人中心进入

    使用步骤

    修改邮箱

    • 定位到邮箱选项并点击编辑图标。
    • 输入新的邮箱地址。
    • 点击保存或确认按钮以应用更改。

    修改企业微信userid

    • 定位到企业微信userid选项并点击编辑图标。
    • 输入新的userid。
    • 点击保存或确认按钮以应用更改。

    修改手机

    • 定位到手机选项并点击编辑图标。
    • 输入新的手机号。
    • 点击保存或确认按钮以应用更改。

    生成个人访问token

    • 定位到生成个人访问token选项并点击,设置访问令牌的失效时间。
    • 系统将生成一个唯一的访问令牌。
    • 复制该访问令牌以备将来使用或记录下来。
    • 访问令牌可用于访问个人账户的受限资源或进行身份验证。
    - + \ No newline at end of file diff --git a/docs/user-manual/user-manager/intro/index.html b/docs/user-manual/user-manager/intro/index.html index adcf5cbb..ad2121d4 100644 --- a/docs/user-manual/user-manager/intro/index.html +++ b/docs/user-manual/user-manager/intro/index.html @@ -4,13 +4,13 @@ 功能说明 | SQLE 文档 - +
    版本:v3

    功能说明

    用户中心包含用户管理、角色管理及操作权限列表,由平台管理员操作,涉及用户及角色权限的配置。

    • 用户管理:指平台用户的管理,由管理员创建用户或编辑用户基本信息,可参考用户管理
    • 角色管理:SQLE平台使用角色管理来实现操作权限组合,由管理员创建,可参考角色管理

    使用场景

    • 在添加项目成员、成员组之前,需要由管理员首先创建平台用户,项目管理员才可将用户添加为项目成员。
    • 为项目成员绑定数据源与角色操作权限前,需要由管理员创建相应权限的角色模板,项目管理员可为成员绑定配置的角色模板。
    - + \ No newline at end of file diff --git a/docs/user-manual/user-manager/role/index.html b/docs/user-manual/user-manager/role/index.html index 27a09d98..3cf410fc 100644 --- a/docs/user-manual/user-manager/role/index.html +++ b/docs/user-manual/user-manager/role/index.html @@ -4,13 +4,13 @@ 角色管理 | SQLE 文档 - +
    版本:v3

    角色管理

    当需要为用户设置动作权限时,可使用角色管理配置动作组合。

    如用户需要有创建工单、审核工单、SQL查询的动作权限,管理员可以在角色管理创建一个角色,并绑定创建工单、审核工单、SQL查询这三个动作,随后只需将此角色关联至指定成员,即可完成用户的动作权限设置。

    操作步骤

    • 点击顶部导航栏更多按钮,点击平台管理栏目下的用户中心选项,查看角色管理标签。
    • 点击列表右上角创建角色按钮,填写相关信息
      • 角色名
      • 角色描述
      • 选择动作权限:配置该角色所拥有的操作权限,SQLE平台支持的动作权限如下:
    权限名权限码权限说明
    查看他人工单20100当角色拥有该动作权限时,角色可以查看绑定的数据源上其他用户创建的工单
    创建/编辑工单20200当角色拥有该动作权限时,角色可以在绑定的数据源上创建工单
    工单审批20300当审核流程模版中的某个审核步骤指定为允许所有有权限的用户审批时, 拥有此权限的用户将可以审批对应工单
    审核任务查看30100拥有此权限的用户可以查看所有审核任务, 无此权限的用户只能查看自己创建审核任务
    审核任务创建30200拥有此权限的用户可以创建审核任务
    sql查询40100拥有此权限的用户可以上线工单

    执行结果

    可在角色列表查看创建的角色信息。

    role

    后续步骤

    • 添加成员/成员组:项目管理员在项目中添加成员/成员组时,需要绑定成员/成员组在对应数据源上的角色权限,可参考成员/成员组管理

    更多操作

    • 编辑角色:点击角色列表的编辑按钮,编辑角色信息。角色名不可更改,可设置角色禁用,则对应权限不会生效。
    • 删除角色:点击角色列表的删除按钮,删除角色信息。
    - + \ No newline at end of file diff --git a/docs/user-manual/user-manager/user/index.html b/docs/user-manual/user-manager/user/index.html index 00b77410..b9d3eee3 100644 --- a/docs/user-manual/user-manager/user/index.html +++ b/docs/user-manual/user-manager/user/index.html @@ -4,13 +4,13 @@ 用户管理 | SQLE 文档 - +
    版本:v3

    用户管理

    当需要创建新的用户,或需要由管理员修改用户基本信息时,可以进行用户管理的相关操作。

    操作步骤

    • 点击顶部导航栏更多按钮,点击平台管理栏目下的用户中心选项,查看用户管理标签。

    • 点击列表右上角创建用户按钮,填写用户相关信息:

      • 用户名
      • 密码
      • 确认密码
      • 邮箱:若开启邮件推送或飞书推送服务,则将会以邮件形式通知对应用户工单的流转状态
      • 微信ID:若开启企业微信推送服务,则将通过企业微信通知对应用户工单的流转状态
      • 平台管理权限:当前可选项为创建项目,若选择该权限,则该用户将具有创建项目的权限
    • 点击提交,完成用户创建

    执行结果

    创建成功后,可在用户列表中查看已创建的用户信息

    userlist

    后续步骤

    • 添加项目成员:项目管理员可进入指定项目,将创建的用户添加为项目成员,可参考成员/成员组管理

    更多操作

    • 编辑用户:其中,用户名不可更改,其他信息项均可更改。
    • 删除用户
    • 修改用户密码:点击用户列表的更多按钮,下拉菜单中点击更修改该用户密码
      提示

      管理员还可以对指定的用户进行禁用或者启用。 当用户被管理员禁用后,该用户将无法登录,也无法进行任何操作。 管理员用户永远无法禁用自己本身。

    - + \ No newline at end of file diff --git a/docs/v2/FAQ/intro/index.html b/docs/v2/FAQ/intro/index.html index 3d6b4eb9..c3f2f7ad 100644 --- a/docs/v2/FAQ/intro/index.html +++ b/docs/v2/FAQ/intro/index.html @@ -4,13 +4,13 @@ FAQ | SQLE 文档 - +
    版本:v2

    FAQ

    本章将针对使用过程中的常见问题进行解答。

    - + \ No newline at end of file diff --git a/docs/v2/FAQ/whichdatabase/index.html b/docs/v2/FAQ/whichdatabase/index.html index 1ef95133..e541ff0f 100644 --- a/docs/v2/FAQ/whichdatabase/index.html +++ b/docs/v2/FAQ/whichdatabase/index.html @@ -4,13 +4,13 @@ 支持哪些数据库 | SQLE 文档 - +
    版本:v2

    支持的数据库及版本

    数据库类型验证可用的版本
    MySQL5.7.25 、8.0.33
    PostgreSQL9.3 – 13
    Oracle11.2、12.1、12.2
    SQL server2008、2012、2016
    DB211.5
    TiDB4.0.8
    OceanBase For MySQL3.5
    达梦V8
    提示

    当前版本为SQLE验证确认可用的版本,若需要使用其他版本,需自行验证

    - + \ No newline at end of file diff --git a/docs/v2/SUMMARY/index.html b/docs/v2/SUMMARY/index.html index fc783563..637ed132 100644 --- a/docs/v2/SUMMARY/index.html +++ b/docs/v2/SUMMARY/index.html @@ -4,13 +4,13 @@ Summary | SQLE 文档 - + - + \ No newline at end of file diff --git a/docs/v2/deploy-manual/cluster/index.html b/docs/v2/deploy-manual/cluster/index.html index 087877fa..2c94aa71 100644 --- a/docs/v2/deploy-manual/cluster/index.html +++ b/docs/v2/deploy-manual/cluster/index.html @@ -4,13 +4,13 @@ 集群部署【企业版】 | SQLE 文档 - +
    版本:v2

    集群部署【企业版】

    SQLE支持集群模式,支持主节点宕机后,从节点能够提升为主并支持后台任务,执行如工单定时上线,智能扫描任务,工单回收,外部数据源对接,钉钉工单对接等任务,保证任务正常执行。

    cluster

    使用场景

    当用户需要对SQLE配置高可用场景,确保任一服务节点宕机均不会影响到业务的正常执行时,用户可开启集群模式。

    配置说明

    开启集群模式仅需用户进入SQLE配置文件,修改如下内容:

    参数说明示例备注
    server:sqle_config:enable_cluster_mode是否开启集群模式true当需要开启集群模式时,新增该参数,并设为开启
    server:sqle_config:server_idSQLE节点的IDnode_1目前未对节点进行全局唯一校验,需要人工确认集群内不能重复,重复会导致出现多leader等情况
    配置文件示例
      server:
    sqle_config:
    server_port: 10000
    auto_migrate_table: true
    debug_log: false
    log_path: './logs'
    plugin_path: './plugins'
    enable_cluster_mode: true # true表示开启集群模式
    server_id: node_1 # 设置当前节点编号
    db_config:
    mysql_cnf:
    mysql_host:
    mysql_port:
    mysql_user:
    mysql_password:
    mysql_schema:
    提示

    修改配置文件后,需要重启SQLE生效。

    - + \ No newline at end of file diff --git a/docs/v2/deploy-manual/config/index.html b/docs/v2/deploy-manual/config/index.html index 3a40958a..94a33273 100644 --- a/docs/v2/deploy-manual/config/index.html +++ b/docs/v2/deploy-manual/config/index.html @@ -4,13 +4,13 @@ 配置文件说明 | SQLE 文档 - +
    版本:v2

    配置文件说明

    提示

    SQLE的配置文件采用yml的格式,默认情况下位于SQLE安装目录下,路径为./etc/sqled.yml

    默认文件参考

    server:
    sqle_config:
    server_port: 10000
    enable_https: false
    cert_file_path: './etc/cert.pem'
    key_file_path: './etc/key.pem'
    auto_migrate_table: true
    debug_log: false
    log_path: './logs'
    log_max_size_mb: 1024
    log_max_backup_number: 2
    secret_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' #从 v1.2203.0 版本引入
    db_config:
    mysql_cnf:
    mysql_host: '127.0.0.1'
    mysql_port: 3306
    mysql_user: 'root'
    mysql_password: '123456'
    mysql_schema: 'sqle'

    配置说明

    sqle_config

    参数说明
    server_portsqle 服务的 http 端口,默认10000
    enable_https是否开启https,默认不开启
    cert_file_pathhttps 证书路径
    key_file_pathhttps 私钥路径
    auto_migrate_table自动创建表结构,初始化数据
    debug_log开启debug模式,打印更多日志,会打印业务SQL,开发环境可开启
    log_path日志目录
    log_max_size_mb单个日志文件最大大小,单位MB
    log_max_backup_number日志文件最大备份数量
    secret_key全局AES加密秘钥,影响登录和用户密码等的存储;生产环境建议配置该值替换掉程序默认值,不然会存在安全风险;格式是32位随机字符串

    db_config

    参数说明
    mysql_hostSQLE存储库的地址
    mysql_portSQLE存储库的端口
    mysql_userSQLE存储库的数据库用户
    mysql_passwordSQLE存储库的数据库密码
    mysql_schemaSQLE存储库的数据库 schema
    - + \ No newline at end of file diff --git a/docs/v2/deploy-manual/docker-compose/index.html b/docs/v2/deploy-manual/docker-compose/index.html index 5fa83e78..54f353ab 100644 --- a/docs/v2/deploy-manual/docker-compose/index.html +++ b/docs/v2/deploy-manual/docker-compose/index.html @@ -4,13 +4,13 @@ Docker Compose 部署 | SQLE 文档 - +
    版本:v2

    Docker Compose 部署

    使用 docker-compose 部署不需要提前准备 MySQL 环境,可以一键生成 SQLE 环境

    配置文件

    下载地址:docker-compose.yaml

    使用说明

    将 docker-compose.yaml 文件下载到本地目录,并进入目录内,通过环境变量SQLE_IMAGE指定不同版本的 SQLE 镜像,默认是 latest。

    SQLE_IMAGE=actiontech/sqle-ce:latest docker-compose up -d

    访问

    http://127.0.0.1:10000

    - + \ No newline at end of file diff --git a/docs/v2/deploy-manual/docker/index.html b/docs/v2/deploy-manual/docker/index.html index f787f9a2..7080b28f 100644 --- a/docs/v2/deploy-manual/docker/index.html +++ b/docs/v2/deploy-manual/docker/index.html @@ -4,13 +4,13 @@ Docker 部署 | SQLE 文档 - +
    版本:v2

    Docker 部署

    Docker hub 地址

    actiontech/sqle-ce

    Docker 参考命令

    docker run -d -it \
    --name sqle-server \
    -p 10000:10000 \
    -e MYSQL_HOST="10.10.10.10" \
    -e MYSQL_PORT=3306 \
    -e MYSQL_USER="username" \
    -e MYSQL_PASSWORD="password" \
    -e MYSQL_SCHEMA="sqle" \
    actiontech/sqle-ce:latest

    参数说明

    使用环境变量传递参数,这些指定的配置会映射到 sqled.yml 配置内,指定数据库的配置等。

    变量说明
    MYSQL_HOST数据库地址
    MYSQL_PORT数据库端口
    MYSQL_USER数据库用户
    MYSQL_PASSWORD数据库密码
    MYSQL_SCHEMASQLE 服务使用的指定的 schema
    DEBUG是否输出 debug 日志,默认为false
    AUTO_MIGRATE_TABLE是否自动创建表格和初始化数据,默认为true

    注意点

    提示

    使用 docker 命令运行容器需要提前准备 MySQL 服务并且创建对应的数据库 schema,创建数据库的SQL可参考:RPM 部署

    提示

    如果 SQLE 容器启动失败可以使用 docker logs sqle-server 查看启用日志,其中 sqle-server是容器名称。

    - + \ No newline at end of file diff --git a/docs/v2/deploy-manual/intro/index.html b/docs/v2/deploy-manual/intro/index.html index 52639db4..29e09d64 100644 --- a/docs/v2/deploy-manual/intro/index.html +++ b/docs/v2/deploy-manual/intro/index.html @@ -4,13 +4,13 @@ 安装说明 | SQLE 文档 - +
    版本:v2

    安装说明

    SQLE 提供了多种安装部署的方式,用户可以结合自己的环境和现状选择。初次体验或者测试使用的话建议使用docker-compose 或 docker 快速部署。

    安装方式

    1. 源码安装
    2. RPM 部署
    3. Docker 部署
    4. Docker Compsoe 部署

    如何访问

    SQLE 对外提供 web 服务,在程序部署完成后,即可通过 SQLE UI 访问:http://127.0.0.1:10000

    提示

    ps:ip 和端口请根据前面的配置自行替换,默认端口是10000。

    初始用户

    • 用户名:admin
    • 密码:admin
    - + \ No newline at end of file diff --git a/docs/v2/deploy-manual/rpm/index.html b/docs/v2/deploy-manual/rpm/index.html index 86490f55..2a6c5f49 100644 --- a/docs/v2/deploy-manual/rpm/index.html +++ b/docs/v2/deploy-manual/rpm/index.html @@ -4,13 +4,13 @@ RPM 安装 | SQLE 文档 - +
    版本:v2

    RPM安装

    环境准备

    • CentOS 7
    • MySQL 5.7

    下载安装包

    下载 SQLE 的 RPM 安装包,下载连接点击这里

    安装 SQLE

    执行 RPM 的安装命令:

    rpm -ivh /path/to/sqle-ce-${version}.qa.el7.x86_64.rpm --prefix=/opt/sqle

    创建数据库

    准备一台 MySQL5.7 作为 SQLE 的后端存储数据库。执行下面命令创建 SQLE 需要的 schema:

    CREATE DATABASE IF NOT EXISTS sqle default character set utf8mb4 collate utf8mb4_unicode_ci
    提示

    创建好的 Schema 将在下面修改SQLE配置时使用到。

    修改 SQLE 配置文件

    安装完 SQLE 后,需要根据实际情况修改SQLE的配置,参考:配置文件说明。SQLE安装完成后提供一个配置模版可直接修改。

    cd /opt/sqle/etc
    mv sqled.yml.template sqled.yml
    vim sqled.yml
    提示

    确保 sqled.yml 的文件 owner 为 actiontech-universe:actiontech

    启动 SQLE

    SQLE 进程通过 Systemd 管理。在成功安装 RPM 后,执行启动命令:

    systemctl start sqled

    启动失败问题诊断

    参考:https://github.com/actiontech/sqle/discussions/1239

    - + \ No newline at end of file diff --git a/docs/v2/deploy-manual/source/index.html b/docs/v2/deploy-manual/source/index.html index 6f033268..b041b392 100644 --- a/docs/v2/deploy-manual/source/index.html +++ b/docs/v2/deploy-manual/source/index.html @@ -4,13 +4,13 @@ 源码安装 | SQLE 文档 - +
    版本:v2

    源码安装

    环境准备

    • CentOS 7
    • MySQL 5.7
    • Docker
    • Docker Compose(可选)

    获取源码

    SQLE 前端与后端代码分两个仓库维护,所以想要通过源码安装,需要构建前后端代码。

    首先选择一个源码安装的工作目录,例如 ~/sqle-build/。

    获取后端源码:

    cd ~/sqle-build/
    git clone https://github.com/actiontech/sqle.git

    获取前端源码:

    cd ~/sqle-build/
    git clone https://github.com/actiontech/sqle-ui.git

    编译源码

    编译前端代码,并将前端代码拷贝至后端代码目录:

    cd ~/sqle-build/sqle-ui
    docker container run --rm -v $PWD:/app -w /app node:15.3.0 sh -c "yarn install && yarn build"
    rm -rf ~/sqle-build/sqle/ui && cp -r ~/sqle-build/sqle-ui/build/ ~/sqle-build/sqle/ui/

    编译后端代码并打包:

    cd ~/sqle-build/sqle
    make docker_rpm

    打包完成后会在当前目录下生成一个 SQLE 的 RPM 包,后续的步骤参考:RPM 部署

    - + \ No newline at end of file diff --git a/docs/v2/dev-manual/intro/index.html b/docs/v2/dev-manual/intro/index.html index 318301ac..15d08515 100644 --- a/docs/v2/dev-manual/intro/index.html +++ b/docs/v2/dev-manual/intro/index.html @@ -4,13 +4,13 @@ 产品架构 | SQLE 文档 - +
    - + \ No newline at end of file diff --git a/docs/v2/dev-manual/plugins/howtodev/index.html b/docs/v2/dev-manual/plugins/howtodev/index.html index 977d3f2f..a9a0584f 100644 --- a/docs/v2/dev-manual/plugins/howtodev/index.html +++ b/docs/v2/dev-manual/plugins/howtodev/index.html @@ -4,7 +4,7 @@ 数据库审核插件开发 | SQLE 文档 - + @@ -12,7 +12,7 @@
    版本:v2

    数据库审核插件开发

    在本篇文档中,会介绍如何开发一个数据库审核插件,分为快速开始部分和详细部分。

    • 如果你是一个对 Go 语言不太了解的人,可以先通过快速开始部分的文档,实现一个简单的数据库审核插件。
    • 当你对插件开发有了一定的了解之后,可以通过详细部分的文档,通过更多自定义的方式,实现更加复杂的数据库审核插件。

    快速开始

    前置

    1. 语法

    由于 SQLE 是一个用 Go 语言开发的开源项目,如果你对 Go 语言完全不了解,需要先了解 Go 语言的基础语法,建议使用官方的 Go 语言快速开始文档(Go Tour 或者 Go 语言之旅),如果你已经了解了 Go 语言的基础语法,可以直接跳过本部分。

    2. 包管理

    SQLE 插件是一个独立于 SQLE 的进程,所以编写插件的方式与开发一个新的 Go 语言项目并没有什么差异。Go 语言项目使用 Go Modules 来管理包,所以在开始之前你需要先了解一下 Go Modules 的使用方法。建议参考这篇文档,文档中大致介绍了如果开始一个新的 Go 语言项目,并通过 Go Modules 的方式来调用其他项目的包,如果你已经了解了 Go Modules 的使用方法,可以直接跳过本部分。

    3. Go语言项目构建

    编写插件

    这一小节会假设你已经创建了一个由 Go Modules 管理的审核插件项目。下面开始介绍插件核心代码的开发。

    1. 数据库插件介绍

    SQLE 为了方便插件的开发,在自身的插件层之上做了一层封装(Adaptor),插件开发者可以使用这个封装库来快速的开发一个数据库审核插件。

    在开发之前,你需要先引入 SQLE:

    go get github.com/actiontech/sqle@v2.2305.0-pre2 # 此版本为该文档编辑时的最新版本

    选择 SQLE 中两个库插件相关的库:

    • github.com/actiontech/sqle/sqle/driver
    • github.com/actiontech/sqle/sqle/pkg/driver
    提示
    • 第一个库定义了插件规则的结构体,在你编写插件规则时需要用到这个库。
    • 第二个库中实现了一些默认的插件,在引入这个库后,只需要实现相应的规则与规则处理函数即可。其中三个默认的插件为:
      • PostgreSQL
      • Oracle
      • SQL Server
    • 如果这三个默认的插件不能满足需求,可以自己实现一个插件,参考本篇文档自定义插件小节。

    2. 选择插件

    下面假设你想要实现一个 SQL Server 的审核插件。在 main 函数中创建一个空的 SQL Server 审核插件,这时你的 main 文件应该是这样的:

    package main

    import (
    "github.com/actiontech/sqle/sqle/driver"
    adaptor "github.com/actiontech/sqle/sqle/pkg/driver"
    )

    func main() {
    plugin := adaptor.NewAdaptor(&adaptor.MssqlDialector{})
    }

    3. 编写插件规则与规则处理函数

    假设你需要实现一个规则,该规则检查 SQL 是否使用了 select *。定义规则如下:

    Rule{
    Name: "aviod_select_all_column", # 规则ID,该值会与插件类型一起作为这条规则在 SQLE 的唯一标识
    Desc: "避免查询所有的列", # 规则描述
    Category: "DQL规范", # 规则分类,用于分组,相同类型的规则会在 SQLE 的页面上展示在一起
    Level: driver.RuleLevelError, # 规则等级,表示该规则的严重程度。在插件注册阶段,会使用所有 RuleLevelError 级别的规则创建一个默认的规则模板。
    }

    规则的处理函数如下:

    func(ctx context.Context, rule *driver.Rule, sql string) (string, error) {
    if strings.Contains(sql, "select *") {
    return rule.Desc, nil
    }
    return "", nil
    }

    这里为了演示,这个处理函数只是简单的使用了字符串匹配的方式,你也可以使用正则或者 AST 语法树的方式来检查 SQL 语句(AST 的方式会在自定义SQL解析器一小节中介绍)。

    最后将插件规则与规则处理函数通过 plugin.AddRule()函数注册到 SQLE 中,注册完成后,你的 main 文件应该是这样的:

    package main

    import (
    "github.com/actiontech/sqle/sqle/driver"
    adaptor "github.com/actiontech/sqle/sqle/pkg/driver"
    )

    func main() {
    plugin := adaptor.NewAdaptor(&adaptor.MssqlDialector{})
    aviodSelectAllColumn := &driver.Rule{
    Name: "aviod_select_all_column",
    Desc: "避免查询所有的列",
    Category: "DQL规范",
    Level: driver.RuleLevelError,
    }
    aviodSelectAllColumnHandler := func(ctx context.Context, rule *driver.Rule, sql string) (string, error) {
    if strings.Contains(sql, "select *") {
    return rule.Desc, nil
    }
    return "", nil
    }
    plugin.AddRule(aviodSelectAllColumn, aviodSelectAllColumnHandler)

    ////////////////////////////////////////////
    // ... 编写更多规则并通过 AddRule 注册到 SQLE 中
    ////////////////////////////////////////////

    // 最后关键一步,调用 `plugin.Serve()` 启动插件:
    plugin.Serve()
    }

    4. 构建并使用插件

    和通常的程序编写流程一样,编写完插件代码后,需要将其构建成二进制文件,然后才能将其注册到 SQLE 中。执行 go build -o ${二进制名} main.go 将插件代码构建成二进制文件。最后参考数据库审核插件使用 来使用你的自定义插件。

    自定义部分

    1.自定义SQL解析器

    前面介绍的审核规则都是通过字符串匹配的方式来解析 SQL 的内容。这种方式适合规则较少且 SQL 简单的情况下使用。

    如果需要对 SQL 进行更复杂的解析匹配,恰好你选择的数据库插件又有相应的 SQL 解析器,这时可以使用自定义 SQL 解析器的方式来编写插件。

    首先通过调用 WithSQLParser() 注册自己的 SQL 解析器。在添加规则时则使用 plugin.AddRuleWithSQLParser() 添加带有解析器的处理函数。在处理函数中,将 interface{} 断言成具体的 AST 语法树,通过语法树级别的操作来更加精细的处理 SQL。PostgreSQL 提供了基于 cgo 调用的解析器(见:PostgreSQL SQL 解析器),下面的代码展示了如何写一个 SQL 解析器的插件:

    func main() {
    plugin := adaptor.NewAdaptor(&adaptor.PostgresDialector{})

    // 依然是定义规则
    aviodSelectAllColumn := &driver.Rule{
    Name: "aviod_select_all_column",
    Desc: "避免查询所有的列",
    Category: "DQL规范",
    Level: driver.RuleLevelError,
    }

    // 依然是定义处理函数,这时处理函数的参数是 interface{} 类型,需要将其断言成 AST 语法树。
    aviodSelectAllColumnHandler := func(ctx context.Context, rule *driver.Rule, ast interface{}) (string, error) {
    node, ok := ast.(*parser.RawStmt)
    if !ok {
    return "", errors.New("ast is not *parser.RawStmt")
    }

    switch stmt := node.GetStmt().GetNode().(type) {
    case *parser.Node_SelectStmt:
    for _, target := range stmt.SelectStmt.GetTargetList() {
    column, ok := target.GetResTarget().GetVal().GetNode().(*parser.Node_ColumnRef)
    if !ok {
    continue
    }
    for _, filed := range column.ColumnRef.GetFields() {
    _, ok = filed.GetNode().(*parser.Node_AStar)
    if ok {
    return rule.Desc, nil
    }
    }
    }
    }
    return "", nil
    }

    // 依然是注册规则,与前面的例子不同的是,这时使用的是 `plugin.AddRuleWithSQLParser()` 。
    plugin.AddRuleWithSQLParser(aviodSelectAllColumn, aviodSelectAllColumnHandler)

    // 依然是启动插件,与前面的例子不同的是,需要将 SQL 解析的方法注册到插件中。
    plugin.Serve(adaptor.WithSQLParser(func(sql string) (ast interface{}, err error) {
    // parser.Parse 使用 PostgreSQL 的解析器,将 sql 解析成 AST 语法树。
    result, err := parser.Parse(sql)
    if err != nil {
    return nil, errors.Wrap(err, "parse sql error")
    }
    if len(result.Stmts) != 1 {
    return nil, fmt.Errorf("unexpected statement count: %d", len(result.Stmts))
    }

    // 将 SQL 的语法树返回。
    return result.Stmts[0], nil
    }))
    }

    2.自定义插件

    如果 driver 包中默认的 PostgreSQL、Oracle 与 SQL Server 插件不能满足你的需求的话,你也可以自定义一个数据库插件。方法就是实现一个接口:

    type Dialector interface {
    Dialect(dsn *driver.DSN) (driverName string, dsnDetail string)
    ShowDatabaseSQL() string
    String() string
    }

    在实现这个接口前,你需要先了解一下 Go 语言原生 Driver 的概念(以 MySQL Driver 为例)。

    下面介绍 Dialector 接口的含义:

    • Dialect:实现该方法,通过 DSN 提供的 Host Port User Password Database 信息和你选择的数据库 driver,构造出 driverName 与 dsnDetail。driverName 是你引入的数据库 driver 名称;dsnDetail 是连接数据库驱动的必要信息。这两个参数最终会通过 sql.Open() 来创建一个数据库连接。
    • ShowDatabaseSQL:实现该方法,可以自定义你数据源中默认展示的数据库列表,该数据库列表最终会展示在工单审核列表的数据库下拉框中,如下图: pluginworkflow
    • String:实现该方法,该方法的返回值会作为你实现的数据库审核插件名展示在 SQLE 的相关下拉框中,如下图: plugintype

    将你的实现作为 NewAdaptor 的参数传入即可,后续的步骤与前面规则相关的介绍一致。

    详细

    SQLE与插件的交互图

    sqleplugin

    插件接口说明

    1.注册接口说明

    该接口定义了该插件的名称和实现的规则,SQLE启动的时候会调用该接口获取插件名称和该插件支持的规则列表。

    type Registerer interface {
    Name() string
    Rules() []*model.Rule
    }
    • Name: 插件名,最终会展示在 SQLE 页面的数据源类型的下拉框中;
    • Rules: 插件支持的规则,在启动 SQLE 时,会调用插件获取这些规则,你将在规则模板内看到它们。

    2.审核接口说明

    该接口定义了SQLE进行审核时,由插件完成的和具体数据库底层交互的操作

    type Driver interface {
    Close(ctx context.Context)
    Ping(ctx context.Context) error
    Exec(ctx context.Context, query string) (driver.Result, error)
    Tx(ctx context.Context, queries ...string) ([]driver.Result, error)
    Schemas(ctx context.Context) ([]string, error)
    Parse(ctx context.Context, sqlText string) ([]Node, error)
    Audit(ctx context.Context, sql string) (*AuditResult, error)
    GenRollbackSQL(ctx context.Context, sql string) (string, string, error)
    }
    • Close: 关闭审核插件使用的相关资源,通常是完成一次审核后,关闭数据库连接等资源;
    • Ping: 检测数据库的连接性,通常在添加数据源时,为了检测填写的数据是否正确,会调用此方法;
    • Exec: 执行 SQL 上线时执行此方法;
    • Tx: 执行 SQL 上线时执行此方法,一般当SQL是DML时且需要事务执行时会批量执行SQL;
    • Schemas: 返回审核插件展示给用户的 Schema 列表;
    • Parse: 解析审核插件支持的 SQL 格式;
    • Audit: 根据指定的SQL语句生成审核建议;
    • GenRollbackSQL: 生成 SQL 的回滚语句。

    3.插件的配置信息说明

    type Config struct {
    DSN *DSN
    Rules []*Rule
    }
    • DSN: 数据源信息, 待审核的数据库;
    • Rules: 本次审核制定的规则列表。

    4.初始化函数说明

    插件的主进程入口,由插件的 main 函数调用即可实现插件

    func ServePlugin(r Registerer, newDriver func(cfg *Config) Driver)
    • r: 传入 Registerer 的接口实现, 由插件侧实现;
    • newDriver: 传入 Driver 的初始化函数,该函数的入参是 Config 是由 SQLE 向插件传递的配置信息,函数的出参是 Driver 的接口实现,由插件侧实现。
    - + \ No newline at end of file diff --git a/docs/v2/dev-manual/plugins/howtouse/index.html b/docs/v2/dev-manual/plugins/howtouse/index.html index b4072eda..d6955f0c 100644 --- a/docs/v2/dev-manual/plugins/howtouse/index.html +++ b/docs/v2/dev-manual/plugins/howtouse/index.html @@ -4,7 +4,7 @@ 数据库审核插件使用 | SQLE 文档 - + @@ -13,7 +13,7 @@ pluginrules 验证能否添加插件类型的数据源:添加数据源,显示已经可以添加 PostgreSQL 类型的数据源。 plugintype

    - + \ No newline at end of file diff --git a/docs/v2/dev-manual/plugins/intro/index.html b/docs/v2/dev-manual/plugins/intro/index.html index b2776b2a..80f687fe 100644 --- a/docs/v2/dev-manual/plugins/intro/index.html +++ b/docs/v2/dev-manual/plugins/intro/index.html @@ -4,13 +4,13 @@ 功能说明 | SQLE 文档 - +
    版本:v2

    功能说明

    SQLE 使用 go-plugin 来实现审核插件化。插件只需实现两个接口,即可实现与 SQLE 主进程通信(详情见审核插件开发)。

    将 SQLE 的数据库审核插件化主要有以下目的:

    • 将审核流程(业务)的代码和具体审核实现的代码进行分离,支持多数据源类型的审核
    • 审核插件在满足基本规范情况下,与 SQLE 独立开发

    部分插件项目地址

    - + \ No newline at end of file diff --git a/docs/v2/guide/index.html b/docs/v2/guide/index.html index 5f14a8a4..da538185 100644 --- a/docs/v2/guide/index.html +++ b/docs/v2/guide/index.html @@ -4,13 +4,13 @@ 用户指南 | SQLE 文档 - +
    版本:v2

    用户指南

    产品概述

    SQLE 是由上海爱可生信息技术股份有限公司 开发并开源,支持SQL审核、索引优化、事前审核、事后审核、支持标准化上线流程、原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具

    - + \ No newline at end of file diff --git a/docs/v2/intro/index.html b/docs/v2/intro/index.html index a6469d73..f4a8cbcf 100644 --- a/docs/v2/intro/index.html +++ b/docs/v2/intro/index.html @@ -4,13 +4,13 @@ 产品介绍 | SQLE 文档 - +
    版本:v2

    产品介绍

    SQLE 是由上海爱可生信息技术股份有限公司 开发并开源,支持SQL审核、索引优化、事前审核、事后审核、支持标准化上线流程、原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具

    产品特性

    SQL审核规范

    1. 审核规则自定义(700+条)
    2. 支持审核结果分级展示,支持生成下载审核报告
    3. 支持规则模版,灵活组合规则
    4. 审核白名单,跳过特例SQL
    5. 支持集成 IDE 自助审核

    多场景审核

    支持事前事后审核,覆盖开发、测试、上线、生产等环节

    标准化上线流程

    1. SQL审核流程按需自定义,满足企业内部不同流程管理要求
    2. 支持定时上线
    3. 支持设置运维时间
    4. 支持Online DDL

    多数据库类型支持

    1. 统一接口,可通过插件进行多数据库审核扩展
    2. 内置MySQL审核插件,官方支持常用数据库类型,包括PostgreSQL、Db2、SQL Server、Oracle、TiDB、OceanBase

    统一的SQL客户端入口

    提供审核管控的SQL客户端,杜绝执行不合规SQL

    丰富的集成能力

    1. 标准HTTP API接口可与客户内部流程系统对接
    2. 支持LDAP,Oauth2用户对接
    3. 支持邮件、微信企业号、webhook 告警对接

    应用场景

    上线前控制

    1. SQLE赋能开发,在代码开发阶段检查SQL质量
    2. SQLE集成专家经验,形成可复用的SQL规范标准规则,用户在平台提交工单后,平台将基于审核规则模板对提交的SQL语句进行初审,用以解决事前审核规范不标准难题

    上线后监督

    1. SQLE提供智能扫描审核功能,实现生产环境下的SQL审核优化
    2. SQLE支持多种类型的扫描任务,基于任务需求执行周期性的扫描任务,并生成扫描结果报告,及时告警
    - + \ No newline at end of file diff --git a/docs/v2/online-demo/index.html b/docs/v2/online-demo/index.html index 1f703437..4ff5c2e1 100644 --- a/docs/v2/online-demo/index.html +++ b/docs/v2/online-demo/index.html @@ -4,13 +4,13 @@ 在线体验 | SQLE 文档 - +
    版本:v2

    在线体验

    地址

    登录用户

    userpassword
    adminadmin

    测试 MySQL

    variablevalue
    host20.20.20.3
    port3306
    userroot
    passtest

    注意事项

    1. 该服务仅用于在线功能体验,请勿在生产环境使用;
    2. 该测试服务数据会定期清理。
    - + \ No newline at end of file diff --git a/docs/v2/quick-usage/index.html b/docs/v2/quick-usage/index.html index 0e61b7d2..23904844 100644 --- a/docs/v2/quick-usage/index.html +++ b/docs/v2/quick-usage/index.html @@ -4,7 +4,7 @@ 快速开始 | SQLE 文档 - + @@ -23,7 +23,7 @@ project-workflow-1

    DBA用户 B 上线

    使用 B 用户进入SQLE后,即可看到由A提交的上线工单,点击详情后可进行审批操作。

    提示

    SQLE 支持通过邮件,微信企业号等途径推送工单通知。也可以配置工单对接来在钉钉上进行工单审批

    project-workflow-1 project-workflow-1 project-workflow-1

    - + \ No newline at end of file diff --git a/docs/v2/support/commercial-support/index.html b/docs/v2/support/commercial-support/index.html index 0066753c..addf77b8 100644 --- a/docs/v2/support/commercial-support/index.html +++ b/docs/v2/support/commercial-support/index.html @@ -4,13 +4,13 @@ 商业支持 | SQLE 文档 - +
    版本:v2

    商业支持

    如果想获得 SQLE 的商业支持, 您可以联系我们:

    • 全国支持: 400-820-6580
    • 华北地区: 86-13910506562, 汪先生
    • 华南地区: 86-18503063188, 曹先生
    • 华东地区: 86-18930110869, 梁先生
    • 西南地区: 86-13540040119, 洪先生
    - + \ No newline at end of file diff --git a/docs/v2/support/community-support/index.html b/docs/v2/support/community-support/index.html index 2bb66ed3..373c8bb3 100644 --- a/docs/v2/support/community-support/index.html +++ b/docs/v2/support/community-support/index.html @@ -4,13 +4,13 @@ 社区支持 | SQLE 文档 - +
    版本:v2

    社区支持

    微信技术交流群

    欢迎加入微信群进行交流,反馈使用中遇到的问题或者使用建议。

    进群方式:添加管理员微信 ActionOpenSource

    爱可生社区公众号

    关注爱可生社区公众号,获取最新SQLE动态包括新功能清单与产品规划。

    项目列表

    - + \ No newline at end of file diff --git a/docs/v2/support/compare/index.html b/docs/v2/support/compare/index.html index c2a46166..c1f66e42 100644 --- a/docs/v2/support/compare/index.html +++ b/docs/v2/support/compare/index.html @@ -4,13 +4,13 @@ 功能对比 | SQLE 文档 - +
    版本:v2

    功能对比

    社区版及企业版功能对比

    模块功能企业版社区版
    平台基础能力资源管理
    权限管理
    用户对接:LDAP
    用户对接:Oauth2.0单点登录
    对接钉钉在线审批
    支持爱可生云树DMP数据源同步
    量化管理项目管理
    报表统计
    Dashboard
    支持的数据源类型MySQL
    Mycat
    TDSQL for InnoDB
    OceanBase For MySQL
    DB2
    TiDB
    PostgreSQL
    Oracle
    OceanBase For Oracle
    SQL Server
    达梦
    SQL审核同一工单多数据源
    多种SQL上传方式
    IDE审核插件
    自助审核
    SQL美化
    动态配置审核规则模板
    审核白名单
    基于规则的审核建议
    审核建议去重展示
    SQL下钻分析
    大表进行 Online DDL
    SQL上下文关联
    生成回滚语句
    审核评分
    审核报告下载
    SQL语句下载
    工单上线自定义审核流程
    多数据源批量上线
    立即上线
    定时上线
    线下执行,线上标记
    中止上线
    智能扫描MySQL|MyBatis 扫描
    MySQL|库表元数据
    MySQL|阿里云 RDS慢日志
    MySQL|阿里云 RDS审计日志
    MySQL|慢日志审核
    MySQL|会话SQL扫描
    MySQL|百度云RDS慢日志
    SQL文件扫描
    应用程序SQL抓取
    支持JAVA探针采集JAVA应用SQL
    Oracle TopSQL
    TiDB审计日志
    OceanBase for MySQL|MyBatis 扫描
    OceanBase for MySQL|Top SQL
    自定义(通过调用接口推送bash脚本、python程序中的SQL)
    告警通知邮件告警
    微信企业号告警
    飞书告警
    webhook告警
    SQL工作台集成CloudBeaver-提供在线SQL客户端
    安全管控
    OpenAPI提供完整的标准接口方案
    专家服务提供数据对接、SQL规范制定、SQL优化建议等7x24小时服务

    各数据源支持程度对比

    提示

    目前支持的数据源类型中,除MySQL为社区版,其他均为企业版。

    MySQL系

    MySQLMycatTDSQL for InnoDBOceanBase For MySQLTiDB
    功能SQL分析
    SQL上下文
    元数据检查
    SQL回滚
    上线中止
    扫描任务库表元数据
    慢日志
    Processlist
    TopSQL
    TiDB审计日志
    MyBatis
    阿里RDS MySQL慢日志
    阿里RDS MySQL审计日志
    百度云RDS MySQL慢日志扫描
    SQL文件扫描
    应用程序抓取
    自定义
    其他规则数量133122129117119

    非MySQL系

    OracleOceanBase For OracleDB2PostgreSQLSQL server达梦
    功能SQL分析
    SQL上下文
    元数据检查
    SQL回滚
    上线中止
    扫描任务库表元数据
    慢日志
    Processlist
    TopSQL
    TiDB审计日志
    MyBatis
    阿里RDS MySQL慢日志
    阿里RDS MySQL审计日志
    百度云RDS MySQL慢日志扫描
    SQL文件扫描
    应用程序抓取
    自定义
    其他规则数量8583602123
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/customrule/index.html b/docs/v2/user-manual/customrule/index.html index 2fccdaa2..1ec737ba 100644 --- a/docs/v2/user-manual/customrule/index.html +++ b/docs/v2/user-manual/customrule/index.html @@ -4,7 +4,7 @@ 自定义审核规则 | SQLE 文档 - + @@ -16,7 +16,7 @@ customrule-usetemplate 2.创建工单,新建表users123,从工单审核结果中可以看到自定义规则已生效; customrule-result

    提示

    目前仅支持在SQLE平台新建自定义规则,暂不支持导入导出规则模板时携带自定义规则。

    - + \ No newline at end of file diff --git a/docs/v2/user-manual/intro/index.html b/docs/v2/user-manual/intro/index.html index ce23d6d9..abb6ed92 100644 --- a/docs/v2/user-manual/intro/index.html +++ b/docs/v2/user-manual/intro/index.html @@ -4,13 +4,13 @@ 用户手册 | SQLE 文档 - +
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/jetbrains/index.html b/docs/v2/user-manual/jetbrains/index.html index 7ea161b3..3a9baf21 100644 --- a/docs/v2/user-manual/jetbrains/index.html +++ b/docs/v2/user-manual/jetbrains/index.html @@ -4,7 +4,7 @@ IDEA审核插件 | SQLE 文档 - + @@ -15,7 +15,7 @@ ide-install-use

    2.用户也可以选中文件后,点击右键, 选中 [SQLE] - [Audit],将获得对文件中SQL的审核结果,支持一次性审核整个文件夹下的MyBatis文件; ide-install-use2

    审核结果

    插件会以弹窗的形式将审核结果进行展示 ide-install-result

    常见问题解答

    为什么插件配置项中的 [DB Type] 点击时偶尔会卡一下

    这是因为点击下拉框时下拉框会连接SQLE获取支持的实例类型, 这个过程可能会出现网络延迟

    SQLE在审核时使用的规则模板是什么

    SQLE会根据设置中指定的数据库类型, 选择对应类型的默认模板进行审核, 且只会使用默认模板中的静态审核规则

    我没有SQLE环境可以使用这个插件吗

    SQLE有演示环境, 如果只是想尝试一下这个插件可以连接演示环境

    插件支持哪些IDE

    Jetbrains家的所有软件和 [Android Studio] 都是支持的

    SQLE插件的配置存在什么地方

     {用户根目录}\AppData\Roaming\JetBrains\{idea版本号对应目录}\options\SQLESettings.xml
    变量说明
    用户根目录一般为 C:\Users 目录下和用户名同名的目录, 内部一般包含 '桌面', '下载' 等文件夹
    idea版本号对应目录一般为 软件名版本号 的格式, 如社区版idea 2022.1版本对应目录名为 IdealC2022.1
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/operation_records/index.html b/docs/v2/user-manual/operation_records/index.html index 86a34214..5eda59a2 100644 --- a/docs/v2/user-manual/operation_records/index.html +++ b/docs/v2/user-manual/operation_records/index.html @@ -4,14 +4,14 @@ 操作记录 | SQLE 文档 - +
    版本:v2

    操作记录

    使用场景

    SQLE平台提供操作记录,当审核/上线产生问题时,用户需要从操作行为判定问题责任方。此时,用户可以使用平台的操作记录功能,查看平台行为的操作人、操作时间。

    入口

    用户点击平台右上方操作记录icon后,跳转至操作记录页面,查看权限范围内可见的操作记录。

    • 用户可对操作记录进行筛选,查看符合条件的操作记录;
    • 用户也可在当前筛选条件下,导出平台操作记录,用以线下审计; operation

    更多操作

    SQLE会定时回收已产生的操作记录,目前该过期时间默认为90天。如果用户需要自定义过期时间,可以在全局配置中修改。

    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/analysis/index.html b/docs/v2/user-manual/project/analysis/index.html index ca511b16..0c6723ba 100644 --- a/docs/v2/user-manual/project/analysis/index.html +++ b/docs/v2/user-manual/project/analysis/index.html @@ -4,13 +4,13 @@ SQL分析 | SQLE 文档 - +
    版本:v2

    SQL分析

    SQL分析是什么

    当用户需要了解执行SQL的对象情况时,可以点击SQL后的分析操作,进入SQL分析页面

    使用场景

    操作步骤

    使用限制

    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/audit_task/SQLfile_audit/index.html b/docs/v2/user-manual/project/audit_task/SQLfile_audit/index.html index 34a24265..9ae4d0d3 100644 --- a/docs/v2/user-manual/project/audit_task/SQLfile_audit/index.html +++ b/docs/v2/user-manual/project/audit_task/SQLfile_audit/index.html @@ -4,7 +4,7 @@ SQL文件扫描 | SQLE 文档 - + @@ -12,7 +12,7 @@
    版本:v2

    SQL文件扫描

    本节介绍SQL文件扫描的应用场景及配置方法。

    备注

    平台已支持的所有数据源类型均支持SQL文件扫描

    使用场景

    当用户需要在批量执行SQL前扫描SQL,发现潜在的安全漏洞、提高数据库性能及数据库开发质量时,可以使用SQL文件进行批量扫描。

    使用方式

    前置条件

    在后端环境中准备SQL文件

    新建智能扫描任务

    进入智能扫描任务列表,点击新建,选择SQL文件扫描任务类型。

    执行Scannerd文件

    提示

    注意:使用rpm或docker部署的情况下,scannerd通常在SQLE的bin目录下。

    示例如下:

    ./scannerd sqlfile -H127.0.0.1 -N"SQLfile" -P"10000" -J"default" -D/root/sqle/sqle/cmd/scannerd/scanners/mybatis/testdata/ -A"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcG4iOiJ0ZXN0MDcyNCIsImV4cCI6MTcyMTcyODU0NywibmFtZSI6ImFkbWluIn0.CojdTvBkr-iN_26tWI-Kr6mMnJt1NIDr-Y3v7m9ySuM"

    参数解释如下:

    • -J, --project:说明扫描任务所在项目,例如“default”;
    • -H, --host string:指定SQLE主机所在地址;
    • -P, --port string:指定SQLE所在端口;
    • -N, --name string:指定扫描任务名称,scannerd会将获得的SQL传至指定的任务池中审核;
    • -D, --dir string:指定要扫描的SQL文件路径;
    • -A, --token string:输入扫描任务凭证token;
    • -K, --skip-sql-file-audit:只上传sql,不审核sql;
    • -S, --skip-error-sql-file; 跳过无法解析的sql文件;

    获得执行结果: sqlfile_audit

    平台查看执行结果

    • 用户进入扫描任务详情,可以查看SQLw文件中已采集到的SQL信息;
    • 用户点击立即审核,可以在扫描任务报告中获取当前SQL的审核结果; sqlfile_result
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/audit_task/baiduyunrds/index.html b/docs/v2/user-manual/project/audit_task/baiduyunrds/index.html index 35145f21..15079779 100644 --- a/docs/v2/user-manual/project/audit_task/baiduyunrds/index.html +++ b/docs/v2/user-manual/project/audit_task/baiduyunrds/index.html @@ -4,14 +4,14 @@ 百度云RDS慢日志扫描 | SQLE 文档 - +
    版本:v2

    百度云RDS慢日志扫描

    本节介绍如何在SQLE平台监管百度云RDS实例上产生的慢SQL。

    支持的数据源类型

    • MySQL

    使用场景

    如果用户使用百度云RDS实例,并且想要监管实例上产生的慢SQL,可以通过创建一个百度云RDS慢日志扫描任务来实现。该任务将会定期扫描百度云RDS实例上的慢日志,并将扫描结果发送到SQLE中进行分析。

    前置操作

    • 用户需创建双机高可用版本的百度云RDS实例;
    • 对该实例开通慢日志;

    baiduyunrds

    操作步骤

    新建智能扫描任务

    • 任务名称:输入审核任务名称,必须以字母开头;
    • 数据源名称:指定扫描任务实施的数据源;
    • 数据库:填写需要审核的目标库,若不填则仅进行静态分析不会连库;
    • 数据库类型:根据选取的数据源呈现;
    • 任务类型:选择需要执行的审核任务类型,选择百度云RDS MySQL慢日志
    • 实例ID:填写百度云RDS实例的ID。
    • Access Key:为账号安全认证中的Access Key,用于登录百度云RDS,需要与Secret Key一同使用。
    • Access Secret Key:账号安全认证中Access Key对应的Secret Key。
    • 启动任务时拉取慢日志时间范围(单位:小时,最大7天):扫描任务读取慢日志的时间范围,单位为小时,最大范围为7天。
    • 审核过去时间段内抓取的SQL(分钟): 审核该时间段内抓取到的慢SQL。
    • RDS Open API地址:RDS的地址前缀,用以调用RDS服务,需根据实例所在区域进行填写。如当前实例在华东-上海范围,则应填写rds.fsh.baidubce.com baiduyunrdsurl

    点击提交,完成扫描任务创建。

    执行结果

    • 用户进入扫描任务详情,可以查看扫描任务抓取到的慢SQL。
    • 点击立即审核,可查看对慢SQL的审核结果。

    baiduyunrdsaudit

    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/audit_task/intro/index.html b/docs/v2/user-manual/project/audit_task/intro/index.html index 92d49a83..65801e03 100644 --- a/docs/v2/user-manual/project/audit_task/intro/index.html +++ b/docs/v2/user-manual/project/audit_task/intro/index.html @@ -4,13 +4,13 @@ 功能说明 | SQLE 文档 - +
    版本:v2

    功能介绍

    背景

    在审核工单中我们介绍了如何通过 SQLE 进行 SQL 审核并上线的流程。审核工单管理,主要解决 SQL 上线的规范化流程化的问题,它能够帮助 DBA 自动化处理整个 SQL 上线过程中一些重复繁琐的工作。

    不过审核工单管理也有它的局限性。

    • 第一,通常工单中的审核是一次性操作。上线后,通常还会有业务 SQL访问数据库。这时可能会遇到一些执行效率较低的业务 SQL 造成数据库的性能问题,因而这类业务型SQL同样需要审核。
    • 第二,临近发版,如果这时审核出 SQL 存在一些问题,是否修复这些问题,可能会受到很多因素的影响(如 SQL 问题的影响面大小,项目发版的紧急程度等),因而需要对即将上线的SQL做全量扫描。

    因而,需要引入扫描任务,进行周期性的SQL审核,用以补充工单审核覆盖不到的场景。

    SQLE扫描任务支持的采集模式

    1.SQLE 自动抓取

    • 功能说明
      • 使用SQLE自动抓取,将由SQLE获取指定的SQL文件,传输至指定审核池后,由SQLE进行审核并展示审核结果。
    • 支持的任务类型
      • 库表元数据
      • TopSQL
      • processlist列表

    2.Scanner 抓取

    • 功能说明
      • 使用Scanner抓取,可利用scanner插件获取指定的SQL文件,传输至指定审核池后,由SQLE进行审核并展示审核结果。
    • 支持的任务类型
      • 慢日志
      • Mybatis扫描

    3.OpenAPI 推送

    • 功能说明
      • 使用应用程序SQL抓取,可利用api接口动态获取指定应用程序中的SQL,传输至指定审核池后,由SQLE进行审核并展示审核结果。
    • 支持的任务类型
      • openapi推送
      • 自定义
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/audit_task/java_agent_audit/index.html b/docs/v2/user-manual/project/audit_task/java_agent_audit/index.html index b5635d4f..631f8e6a 100644 --- a/docs/v2/user-manual/project/audit_task/java_agent_audit/index.html +++ b/docs/v2/user-manual/project/audit_task/java_agent_audit/index.html @@ -4,13 +4,13 @@ Java探针版应用程序SQL抓取【企业版】 | SQLE 文档 - +
    版本:v2

    Java探针版应用程序SQL抓取【企业版】

    本节介绍如何利用SQLE平台抓取java应用中的SQL,选取的例子是一个开源的问卷调查java应用,架构简单,上手相对容易。

    支持的数据源类型

    • MySQL
    • Oracle
    • DB2
    • OceanBase for MySQL
    • PostgreSQL
    • TiDB
    • SQL Server

    前置准备

    环境准备

    准备一台 linux 服务器,ubuntu即可,架构版本暂无要求

    1. 安装JAVA
    sudo apt install default-jdk
    1. 部署并启动MySQL服务

    部署java应用

    • 准备Java应用
    • 准备Java应用SQL初始化文件
    • 准备SQLE定制的JAVA agent JAR包
      提示

      JAVA agent JAR包为企业版功能,如有使用需求,请联系SQLE商业支持

    Java应用前置步骤

    1、初始化Java应用

    mysql -h127.0.0.1 -P3306 -uroot -p -e "CREATE DATABASE IF NOT EXISTS jw default character set utf8mb4 collate utf8mb4_unicode_ci"
    mysql -h127.0.0.1 -P3306 -uroot -D jw -p < init-mysql.sql

    2、将Java应用Jar包,定制jdbc上传服务器指定目录下,可以放在 /opt/surveyking 目录下,示例:

    root@ubuntu:/opt/surveyking# pwd
    /opt/surveyking
    root@ubuntu:/opt/surveyking# ls -l
    total 55652
    -rw-r--r-- 1 root root 2932784 Feb 24 08:38 sql-agent-1.0-SNAPSHOT.jar
    -rw-r--r-- 1 root root 54508748 Feb 24 08:37 surveyking-v0.3.0-beta.4.jar

    使用方式

    创建扫描任务

    进入智能扫描任务列表,点击新建,扫描任务类型选择应用程序SQL抓取。

    启动Java应用

    提示

    以下命令需要在本地编辑替换完参数后,一次性拷贝到环境内执行

    SQLE_COLLECT_ENABLE=true \
    SQLE_BASE_URL=http://10.186.62.16:10000 \
    SQLE_TASK_NAME=jw_app \
    SQLE_TASK_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcG4iOiJqd19hcHAiLCJleHAiOjE2NzcyMjYxNzcsIm5hbWUiOiJhZG1pbiJ9.3d0pA1hiVnFEWJokSFBwCT8d1pKOYV6SViENj4GFqgI \
    SQLE_EXCLUDE_JAVA_FILE=UserServiceImpl.java \
    SQLE_LOG_FILE=/tmp/collect.log \
    java -javaagent:sql-agent-1.0-SNAPSHOT.jar \
    -jar surveyking-v0.3.0-beta.4.sqle.jar \
    --server.port=1991 \
    --spring.datasource.url=jdbc:mysql://10.186.62.18:3306/jw \
    --spring.datasource.username=root \
    --spring.datasource.password=mysqlpass \
    & >>/opt/surveyking/std.log

    参数说明(环境变量)

    • SQLE_COLLECT_ENABLE=true :是否开启SQL采集,默认不推送到SQLE只输出本地日志
    • SQLE_BASE_URL:SQLE 服务地址,格式“http://ip:port”
    • SQLE_TASK_NAME:SQLE 审核任务的名称
    • SQLE_TASK_TOKEN:审核任务的token,从SQLE页面复制
    • SQLE_PROJECT_NAME:SQLE JDBC配置:项目名
    • SQLE_LOG_FILE:指定SQLE 采集日志文件,不指定则代表输出到标准输出
    • SQLE_EXCLUDE_JAVA_FILE:忽略部分JAVA文件不插桩,主要是兼容性问题,当修改字节码失败时为了保障能运行抓取。文件按逗号分隔

    参数说明(java 参数)

    • server.port:web服务启用端口
    • spring.datasource.url:jdbc url
    • spring.datasource.username:jdbc user name
    • spring.datasource.password:jdbc password

    访问Java应用

    • 访问地址:如果配置的网页端口是1991则通过网页访问http://xx.xx.xx.xx:1991
    • 用户名:admin
    • 密码:123456
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/audit_task/java_application_audit/index.html b/docs/v2/user-manual/project/audit_task/java_application_audit/index.html index a5365410..d15ddf91 100644 --- a/docs/v2/user-manual/project/audit_task/java_application_audit/index.html +++ b/docs/v2/user-manual/project/audit_task/java_application_audit/index.html @@ -4,13 +4,13 @@ 应用程序SQL抓取【企业版】 | SQLE 文档 - +
    版本:v2

    应用程序SQL抓取【企业版】

    本节介绍如何利用SQLE平台抓取JAVA应用中的SQL,选取的例子是一个开源的问卷调查java应用,架构简单,上手相对容易。

    支持的数据源类型

    • MySQL
    • Oracle
    • DB2
    • OceanBase for MySQL
    • PostgreSQL
    • TiDB
    • SQL Server

    前置准备

    环境准备

    准备一台 linux 服务器,ubuntu即可,架构版本暂无要求

    1. 安装JAVA
    sudo apt install default-jdk
    1. 部署并启动MySQL服务

    部署java应用

    • 准备Java应用
    • 准备Java应用SQL初始化文件
    • 准备SQLE定制的JDBC jar 包
      提示

      JDBC jar包为企业版功能,如有使用需求,请联系SQLE商业支持

    Java应用前置步骤

    1、初始化Java应用

    mysql -h127.0.0.1 -P3306 -uroot -p -e "CREATE DATABASE IF NOT EXISTS jw default character set utf8mb4 collate utf8mb4_unicode_ci"
    mysql -h127.0.0.1 -P3306 -uroot -D jw -p < init-mysql.sql

    2、将Java应用Jar包,定制jdbc上传服务器指定目录下,可以放在 /opt/surveyking 目录下,示例:

    root@ubuntu:/opt/surveyking# pwd
    /opt/surveyking
    root@ubuntu:/opt/surveyking# ls -l
    total 55652
    -rw-r--r-- 1 root root 2477925 Feb 24 08:38 mysql-connector-java-8.0.28-SQLE.jar
    -rw-r--r-- 1 root root 54508748 Feb 24 08:37 surveyking-v0.3.0-beta.4.jar

    3、替换Java应用Jar包的MySQL jdbc jar 包

    cd /opt/surveyking/
    mkdir jar
    cp surveyking-v0.3.0-beta.4.jar jar/
    cd jar/
    jar xvf surveyking-v0.3.0-beta.4.jar # 解压jar包,如果执行失败也可使用 unzip surveyking-v0.3.0-beta.4.jar 代替
    cp ../mysql-connector-java-8.0.28-SQLE.jar BOOT-INF/lib/mysql-connector-java-8.0.26.jar # 替换jdbc
    rm -rf surveyking-v0.3.0-beta.4.jar
    jar cvfM0 surveyking-v0.3.0-beta.4.sqle.jar * # 打包
    mv surveyking-v0.3.0-beta.4.sqle.jar ../
    cd ..
    rm -rf jar/

    使用方式

    创建扫描任务

    进入智能扫描任务列表,点击新建,扫描任务类型选择应用程序SQL抓取。

    启动Java应用

    提示

    以下命令需要在本地编辑替换完参数后,一次性拷贝到环境内执行

    cd /opt/surveyking/
    SQLE_COLLECT_ENABLE=true SQLE_HOST=10.186.62.18:10000 SQLE_TASK_NAME=jw_app SQLE_TASK_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcG4iOiJqd19hcHAiLCJleHAiOjE2NzcyMjYxNzcsIm5hbWUiOiJhZG1pbiJ9.3d0pA1hiVnFEWJokSFBwCT8d1pKOYV6SViENj4GFqgI \
    java -jar surveyking-v0.3.0-beta.4.sqle.jar \
    --server.port=1991 \
    --spring.datasource.url=jdbc:mysql://10.186.62.18:3306/jw \
    --spring.datasource.username=root \
    --spring.datasource.password=mysqlpass \
    & >>/opt/surveyking/std.log

    参数说明(环境变量):

    • SQLE_COLLECT_ENABLE:是否开启SQL采集
    • SQLE_HOST=10.186.62.18:10000:SQLE 服务地址 ip:port
    • SQLE_TASK_NAME=jw_app :审核任务的名称
    • SQLE_TASK_TOKEN:审核任务的token,从SQLE页面复制
    • SQLE_PROJECT_NAME:SQLE JDBC配置:项目名

    参数说明(java 参数)

    • server.port:web服务启用端口
    • spring.datasource.url:jdbc url
    • spring.datasource.username:jdbc user name
    • spring.datasource.password:jdbc password

    访问Java应用

    • 访问地址:如果配置的网页端口是1991则通过网页访问http://xx.xx.xx.xx:1991
    • 用户名:admin
    • 密码:123456
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/audit_task/metadata_audit/index.html b/docs/v2/user-manual/project/audit_task/metadata_audit/index.html index 1209102e..f23f6ca6 100644 --- a/docs/v2/user-manual/project/audit_task/metadata_audit/index.html +++ b/docs/v2/user-manual/project/audit_task/metadata_audit/index.html @@ -4,7 +4,7 @@ 库表元数据 | SQLE 文档 - + @@ -12,7 +12,7 @@
    版本:v2

    库表元数据

    本节介绍库表元数据扫描的应用场景、以及如何创建库表元数据的扫描任务。

    支持的数据源类型

    • MySQL
    • DB2

    使用场景:

    1. 需要检查已上线业务对应数据源的建库建表语句是否符合 统一的SQL质量规范。
    2. 需要定期检查上线业务的库表变更是否符合 统一的SQL质量规范。

    前置条件

    已添加对应数据源。

    操作步骤

    新建智能扫描任务

    • 任务名称:输入审核任务名称,必须以字母开头;
    • 数据源名称:指定扫描任务实施的数据源;
    • 数据库:填写需要审核的目标库,若不填则仅进行静态分析不会连库;
    • 数据库类型:根据选取的数据源呈现;
    • 任务类型:选择需要执行的审核任务类型,选择库表元数据;
    • 采集周期(分钟):将采集设定时间内产生的SQL;
    • 是否采集视图信息:默认不采集视图信息,若开启,则将一并扫描数据源上的视图SQL;
    • 审核规则模板:如果未指定此项会优先使用数据源绑定的模板;
    • 任务审核周期:配置的是SQLE对审核任务进行自动审核的执行时间;

    执行结果

    可在扫描任务列表页面查看新建的库表元数据扫描任务。 list

    点击扫描任务,可查看该扫描任务采集的SQL,及生成的扫描任务报告。 result

    后续步骤

    • 查看审核记录,查看不同时间点的审核结果,包括审核的SQL语句、审核结果。
    • 分析语句,用户可对SQL语句进行分析操作,获取优化建议。
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/audit_task/mybatis/index.html b/docs/v2/user-manual/project/audit_task/mybatis/index.html index 745107dc..0f3c8fee 100644 --- a/docs/v2/user-manual/project/audit_task/mybatis/index.html +++ b/docs/v2/user-manual/project/audit_task/mybatis/index.html @@ -4,7 +4,7 @@ MyBatis扫描 | SQLE 文档 - + @@ -22,7 +22,7 @@ coding-editinfo

    编辑后点击保存,完成构建计划。

    触发构建,获得审核结果

    在构建计划中点击立即构建按钮; coding-do

    可以在在构建过程中查看构建结果,也可以在SQLE平台的扫描任务中查看审核结果。 coding-result

    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/audit_task/processlist_audit/index.html b/docs/v2/user-manual/project/audit_task/processlist_audit/index.html index c502162f..016632a5 100644 --- a/docs/v2/user-manual/project/audit_task/processlist_audit/index.html +++ b/docs/v2/user-manual/project/audit_task/processlist_audit/index.html @@ -4,14 +4,14 @@ 会话SQL扫描 | SQLE 文档 - +
    版本:v2

    会话SQL扫描

    本节介绍如何对MySQL进行中的会话SQL进行监督及审核。

    支持的数据源类型

    • MySQL

    使用场景

    除了上线前和上线后的审核,在SQL语句执行过程中,用户往往也需要对其进行监控和审核,用以及时识别出潜在的问题SQL。然而,当前的审核场景往往无法覆盖事中这一环节的审核。为此,SQLE新增了processlist列表审核扫描任务,实现了事前、事中、事后的全覆盖,使得用户可以在SQL语句的整个生命周期内进行审核和管理,从而减少审核时间和工作量。

    操作步骤

    新建智能扫描任务

    • 任务名称:输入审核任务名称,必须以字母开头;
    • 数据源名称:指定扫描任务实施的数据源;
    • 数据库:填写需要审核的目标库,若不填则仅进行静态分析不会连库;
    • 数据库类型:根据选取的数据源呈现;
    • 任务类型:选择需要执行的审核任务类型,选择processlist列表扫描任务;
    • 采集周期(秒):表示SQLE对 MySQL processlist表的采集频率,SQLE将按照该时间间隔进行SQL采集。如果该值过低,会影响实例性能;
    • SQL最小执行时间(秒):表示SQLE对 MySQL processlist 的采集过滤条件,只有大于等于该时间的SQL才会被采集记录。如果为0,则表示不进行过滤;
    • 审核过去时间段内抓取的SQL(分钟):processlist列表扫描任务是增量审核,不在该时间段内执行的SQL将不会被再次采集;
    • 审核规则模板:如果未指定此项会优先使用数据源绑定的模板;
    • 任务审核周期:配置的是SQLE对审核任务进行自动审核的执行时间;

    执行结果

    • 用户进入扫描任务详情,可以查看已采集到的processlist列表中的SQL信息;
    • 用户点击立即审核,可以在扫描任务报告中获取processlist列表中当前采集周期内产生的SQL及审核结果; processlist-audit
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/audit_task/slowlog_audit/index.html b/docs/v2/user-manual/project/audit_task/slowlog_audit/index.html index 7e3715da..667abc29 100644 --- a/docs/v2/user-manual/project/audit_task/slowlog_audit/index.html +++ b/docs/v2/user-manual/project/audit_task/slowlog_audit/index.html @@ -4,7 +4,7 @@ 慢日志 | SQLE 文档 - + @@ -12,7 +12,7 @@
    版本:v2

    慢日志

    本节介绍慢日志扫描的应用场景、以及如何创建慢日志扫描任务。

    当前SQLE支持两种慢日志采集方式,一种由scanner采集慢日志文件中的慢查询,一种由SQLE直接采集慢查表中的慢查询,用户可在编辑页面选取需要的采集方式,您可选择需要的方式采集产生的慢查询。

    支持的数据源类型

    • MySQL

    使用场景

    需要检查已上线业务是否有超过指定时长的慢SQL产生。

    采集方式

    方式一:采集慢日志文件

    前置条件

    • 已添加对应数据源;
    • 修改配置文件my.cnf,在文件中设置以下内容:
    my.cnf
    slow_query_log = ON //开启慢日志
    slow_query_log_file = /var/lib/mysql/tmp_slow.log //设置慢日志文件路径
    long_query_time = 1 //设置慢查询时间阈值,当前示例时间为1s,可根据实际业务变更

    步骤一:新建智能扫描任务

    新建智能扫描任务,填写以下字段信息:

    • 任务名称:指定扫描任务的名称,当前仅支持英文名称;
    • 数据源名称:选择扫描任务对应的数据源;
    • 数据库:选择扫描任务使用的数据库;
    • 数据库类型:根据选取的数据源呈现;
    • 任务类型:选择慢日志;
    • 审核过去时间段内抓取的SQL(分钟):扫描的时间覆盖范围;
    • 采集来源:填写0,代表采集mysql-slow.log 文件;
    • 审核规则模板:选择对应的审核规则模板;
    • 审核任务周期:配置的是SQLE对审核任务进行自动审核的执行时间;

    点击提交,完成慢日志扫描任务创建。

    步骤二:执行scannerd文件

    提示

    注意:scannerd文件通常在SQLE的bin目录下,需将scannerd文件放在数据源环境下执行。

    示例如下:

    ./scannerd slowquery -H "127.0.0.1" -P "10000" -N "slowlog_of_GRADE1" -J "default" -A eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcG4iOiJzbG93bG9nX29mX0dSQURFMSIsImV4cCI6MTcwODA3MjMzNSwibmFtZSI6ImFkbWluIn0.ArU5HpU7aSSVrRutxSAwRFYahSx0_4RNzD4KB6LTfpM --log-file /var/lib/mysql/mysql-for-test-slow.log

    参数解释如下:

    • -J, --project:说明扫描任务所在项目,例“default”;
    • -H, --host string:指定SQLE主机所在地址;
    • -N, --name string:指定扫描任务名称,scannerd会将获得的慢SQL传至指定的任务池中审核;
    • -P, --port string:指定SQLE所在端口;
    • -A, --token string:输入扫描任务凭证token;
    • --log-file:指定慢日志文件,scannerd从该文件中获取慢SQL;

    方式二:采集慢日志表

    前置条件

    • 已添加数据源
    • 在MySQL中设置以下内容:
    set global long_query_time=1; // 需根据实际业务调整慢查询时间阈值,此处仅供参考
    set global slow_query_log=1; // 开启慢日志查询
    SET GLOBAL log_output='FILE,TABLE';// 开启 MySQL 的慢日志收集功能,并且确认将慢日志内容写入文件 mysql-slow.log 和表 mysql.slow_log
    提示

    为了优化查询性能,使用这一采集方式时,需要用户手动运行下面的SQL,将mysql.slow_log表的引擎改为MyISAM,并添加索引。

    ALTER TABLE mysql.slow_log ENGINE = MyISAM;
    ALTER TABLE mysql.slow_log ADD INDEX idx_start_time (start_time);

    新建智能扫描任务

    新建智能扫描任务,填写以下字段信息:

    • 任务名称:指定扫描任务的名称,当前仅支持英文名称;
    • 数据源名称:选择扫描任务对应的数据源核;
    • 数据库:选择扫描任务使用的数据库;
    • 数据库类型:根据选取的数据源呈现;
    • 任务类型:选择慢日志扫描任务;
    • 采集周期(分钟):SQLE进行采集的周期,若设置为10分钟,则SQLE将每隔10分钟去采集慢日志表中生成的慢查询;
    • 审核过去时间段内抓取的SQL(分钟):扫描的时间覆盖范围;
    • 采集来源:填写1,代表采集mysql.slow_log 表;
    • 审核规则模板:选择对应的审核规则模板;
    • 审核任务周期:配置的是SQLE对审核任务进行自动审核的执行时间;

    点击提交,完成慢日志扫描任务创建。

    执行结果

    在扫描任务详情查看扫描的SQL语句及审核报告。 result result2

    后续步骤

    分析扫描任务报告中出现的慢SQL。

    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/audit_task/topsql/index.html b/docs/v2/user-manual/project/audit_task/topsql/index.html index 566490be..f60dd8ae 100644 --- a/docs/v2/user-manual/project/audit_task/topsql/index.html +++ b/docs/v2/user-manual/project/audit_task/topsql/index.html @@ -4,13 +4,13 @@ TopSQL | SQLE 文档 - +
    版本:v2

    TopSQL

    本节介绍如何

    支持的数据源类型

    • DB2
    • Oracle
    • OceanBase for MySQL
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/group_member/index.html b/docs/v2/user-manual/project/group_member/index.html index 95cb7a12..c7b1ee94 100644 --- a/docs/v2/user-manual/project/group_member/index.html +++ b/docs/v2/user-manual/project/group_member/index.html @@ -4,7 +4,7 @@ 成员/成员组管理 | SQLE 文档 - + @@ -12,7 +12,7 @@
    版本:v2

    成员/成员组管理

    本文介绍项目内添加成员、成员组的步骤,以及其他管理操作。

    成员/成员组由项目管理员添加,只有被添加为成员后,才可查看、操作项目内资源。

    使用场景

    • 一个业务以项目的形式管理SQL工单、扫描任务等资源,若用户需要在指定项目中执行SQL工单、扫描任务等相关操作,则需要成为该项目的成员,并具有相应角色操作权限。
    • 如果用户具备相同的操作权限或者访问相同的资源,可以通过将他们加入同一个成员组来配置他们对项目资源的操作权限。

    前置条件

    • 项目管理员进入指定的项目;
    • 平台管理员已完成用户/用户组的添加;
    • 平台管理员已完成角色的添加;

    添加成员

    步骤

    项目管理员点击左侧导航栏成员标签,在成员列表点击添加成员按钮;

    字段说明

    • 用户名:选择平台已添加的用户;
    • 选择是否为项目管理员:项目管理员将负责项目管理行为,例如添加数据源和成员等;
      • 若将当前成员设为项目管理员,则该成员将对项目内所有数据源拥有所有操作权限,无需额外配置权限;
      • 若未设置,则当前成员在项目内的操作权限将根据下一步添加角色与数据源的绑定获得;
    • 添加角色与数据源的绑定;
      • 添加数据源:指定当前成员能操作的数据源;
      • 添加角色:指定当前成员在该数据源上的角色权限,平台默认提供DEV、DBA两种角色,负责SQL语句的提交、审核及上线操作;更多角色设置请参见角色管理
    • 删除角色与数据源的绑定;

    执行结果

    项目管理员可查看当前项目中添加的成员列表。 成员列表

    后续步骤

    配置项目审核流程模板:一个项目有且仅有一个审核流程,应用于该项目下的所有工单。需要配置审核流程在审核、上线环节的操作人,请参见审核流程模板

    更多操作

    • 编辑成员:添加成员后,项目管理员可修改成员可用的数据源及对应角色权限;
      • 限制:编辑之前产生的工单不受影响,编辑之后工单创建时将应用最新的数据源及权限对应关系;
    • 删除成员:项目管理员可删除项目中的成员;
      • 限制:若成员已不在项目内,则无权操作工单;

    添加成员组

    步骤

    项目管理员点击左侧菜单栏成员标签,在成员组列表点击添加成员组按钮;

    字段说明

    • 用户组名:选择平台已添加的用户组;
    • 添加角色与数据源的绑定:
      • 添加数据源:指定当前成员组能操作的数据源;
      • 添加角色:指定当前成员组在该数据源上的角色权限,平台默认提供DEV、DBA两种角色,负责SQL语句的提交、审核及上线操作;更多角色设置请参见角色管理
    • 删除角色与数据源的绑定:删除为当前成员组设定的数据源及角色信息;

    执行结果

    项目管理员可查看当前项目中添加的成员组列表。 成员组列表

    后续步骤

    • 配置项目审核流程模板:一个项目有且仅有一个审核流程,应用于该项目下的所有工单。需要配置审核流程在审核、上线环节的操作人,请参见审核流程模板

    更多操作

    • 编辑成员组:添加成员组后,项目管理员可修改成员组可用的数据源及对应角色权限;
      • 限制:编辑之前创建的工单不受影响,之后创建的工单将依据新的数据源及权限;
    • 删除成员组:项目管理员可删除项目中的成员组;
      • 限制:若成员组内成员已不在项目内,则无权操作工单;
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/instance-manager/index.html b/docs/v2/user-manual/project/instance-manager/index.html index fba044d6..7c34da1b 100644 --- a/docs/v2/user-manual/project/instance-manager/index.html +++ b/docs/v2/user-manual/project/instance-manager/index.html @@ -4,14 +4,14 @@ 数据源管理 | SQLE 文档 - +
    版本:v2

    数据源管理

    本文介绍如何在项目中进行数据源管理,包括数据源的增加、删除、编辑操作。 数据源是工单和扫描任务的实施对象,用户在平台创建的工单和扫描任务都将针对指定的数据源执行。因而项目创建后需要首先配置项目内可用的数据源。

    提示

    数据源是SQLE连库审核的对象,任何审核的场景下若可以不选数据源则代表将进行脱库审核。

    使用场景

    实际生产中,如果需要针对某个数据源下发SQL或创建扫描任务,需要首先将数据源添加至SQLE平台,测试连通成功后才可创建工单、创建扫描任务。

    添加数据源

    前置操作

    项目管理员进入指定的项目

    操作步骤

    点击左侧导航栏的「数据源」菜单,进入数据源管理页面后,点击「添加数据源」,填写数据源相关信息

    • 数据源名称:命名当前新建的数据源,如:actionsky-test;
    • 数据源描述:用户可对数据源补充更多描述,便于用户通过名称+描述快速更精准地区分数据源;
    • 数据库类型:选择数据库实例对应的数据库类型,当前支持的数据库类型可参考支持的数据库及版本
    • 数据库地址:输入数据库实例的连接地址,支持IP地址、域名两种方式;
    • 数据库端口:添加数据源时根据数据源类型自动切换默认端口;
    • 连接用户:输入数据库实例的连接用户,SQLE在执行SQL审核以及SQL上线时,会通过该连接用户访问数据库实例及下发SQL;
    • 密码:输入数据库实例的连接用户密码;
    • 审核规则模板:审核规则模板将用于创建工单时的审核、扫描任务的审核、SQL查询的审核;
    • 运维时间:如果配置了运维时间, 工单将只能在运维时间内上线(立即上线和定时上线都受此影响), 支持配置多个运维时间, 默认无运维时间,即不限制上线时间;
    • SQL查询是否需要审核:默认不审核;如用户选择开启该功能,则用户在SQL工作台中提交的SQL语句,将匹配审核规则模板进行SQL审核操作;
    • 运行查询的最高审核等级:只有开启 SQL查询的审核功能才生效;支持四种审核等级:normal、notice、warn、error,如设置运行查询的最高审核等级为warn,则触发了warn等级规则以上的SQL语句将报错,并不予执行;未触发warn等级规则以上的SQL语句将被执行;

    执行结果

    数据源添加成功后,可在数据源列表查看新增的数据源信息。

    可根据数据源名称、数据库地址、数据库类型、使用的审核规则模板筛选项进行筛选。

    数据源列表

    后续步骤

    • 创建审核规则:添加数据源后,可针对指定数据源创建适用的审核规则,请参见审核规则模板管理
    • 添加成员/成员组:添加数据源后,需要引入成员/成员组对数据源进行操作,请参见成员/成员组管理

    更多管理功能

    • 编辑数据源:点击数据源列表页面对应数据源条目后的【编辑】按钮,可以修改指定数据源。
      • 限制:数据源名称及数据库类型不支持修改,其他信息均可修改
    • 删除数据源:点击数据源列表页面对应数据源条目后的【删除】按钮,可以删除指定数据源。
      • 限制:若数据源上还有相应工单未完成,则该数据源暂时不可删除
    • 连通性测试:点击【更多】按钮,选择连通性测试,测试是否可以用当前的数据源地址及用户密码成功连入数据源。
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/intro/index.html b/docs/v2/user-manual/project/intro/index.html index 6d398cf5..66f41ff6 100644 --- a/docs/v2/user-manual/project/intro/index.html +++ b/docs/v2/user-manual/project/intro/index.html @@ -4,7 +4,7 @@ 功能介绍 | SQLE 文档 - + @@ -12,7 +12,7 @@
    版本:v2

    功能介绍

    自2.22.11.0版本起,平台引入项目管理概念,与SQL审核相关的资源均以项目的形式进行资源隔离。创建工单前,需要由项目管理员设置好项目内部必要的资源环境,包括项目使用的数据源、用户、流程模板、规则模板、白名单信息等,随后,项目成员才可在项目内提交工单并审核上线,或设置智能扫描任务。 本文介绍项目管理的使用场景以及如何以项目形式管理SQL工单、扫描任务等项目资源。在进行项目管理之前,需要由管理员进行创建项目,具体操作请参见创建项目

    说明

    提示

    社区版仅支持一个默认项目,项目管理员是admin,企业版可创建多个项目,有创建项目权限的用户可以创建项目,创建项目后,可指定其他项目成员为项目管理员。

    使用场景

    企业内容存在多个业务,且各个业务之间的数据源、工单、扫描任务可能由不同团队在负责,希望不同团队之间的数据相互隔离。此时,可在平台内以不同项目的行为去管理多个业务资源(数据源、工单、扫描任务等)。

    项目内资源调度

    资源调度 项目内的主要业务为工单审核及智能扫描任务审核。围绕工单及智能扫描任务,涉及到数据源管理、审核规则模板管理、白名单管理、审核流程管理、成员管理。

    以工单审核为例

    工单是为了满足下发SQL时审核、上线环节的流程化需求。

    工单的完整生命周期包括创建、审核、上线,其中涉及数据源、审核流程、审核规则模板、白名单的操作。

    备注
    • 审核流程:一个项目可绑定一个审核流程,该审核流程将应用于该项目下的所有工单审核。
    • 数据源:工单作用于具体的数据源,创建工单时,需要指定一个或多个数据源。
    • 审核规则模板:创建工单时,平台会基于该数据源应用的审核规则模板,对成员提交的SQL语句进行审核,满足应用的审核规则后,才可创建工单。
    • 白名单:创建工单时,若存在不需要审核的SQL语句,可将该SQL语句添加至白名单,提交该SQL时平台将不做审核。

    以智能扫描任务为例

    智能扫描任务是为了满足长期的SQL审核,平台支持的扫描任务类型包括库表元数据、TopSQL、慢日志、Mybatis扫描、应用程序SQL抓取及其他自定义扫描任务。

    智能扫描任务的完整生命周期包括创建、查看扫描任务报告,其中涉及数据源、审核规则模板、白名单的操作。

    备注
    • 数据源:智能扫描任务作用于具体的数据源,创建智能扫描任务时,需要指定一个数据源。
    • 审核规则模板:创建的智能扫描任务,将基于该任务下数据源应用的审核规则模板,审核任务中的SQL语句,并生成报告。
    • 白名单:创建扫描任务时,若存在不需要审核的SQL语句,可将该SQL语句添加至白名单,执行扫描任务时,将略过该语句。

    项目内资源权限

    资源权限

    项目内由成员执行工单及扫描任务。

    前置条件

    • 需要将平台创建的用户/用户组引入项目,成为项目成员/项目成员组后,才可在项目内进行操作。平台用户/用户组的创建,请参见平台用户管理
    • 引入项目成员/成员组时,需要指定成员/成员组在对应数据源上的操作角色,成员/成员组将继承角色对应的操作权限。角色的配置,请参见平台角色管理

    资源权限说明

    • 一个项目内可引入多个成员/成员组
    • 成员/成员组将依据自身绑定的数据源及对应角色权限,对指定数据源进行指定的操作。
    • 如当前项目引入了成员user1,并在user1上绑定了数据源local,并指定角色为DEV(创建工单),那么user1在当前项目中可执行的操作为:针对数据源local创建工单/管理自己创建的工单。
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/project_create/index.html b/docs/v2/user-manual/project/project_create/index.html index 6d2462ac..3a3578ba 100644 --- a/docs/v2/user-manual/project/project_create/index.html +++ b/docs/v2/user-manual/project/project_create/index.html @@ -4,7 +4,7 @@ 创建项目【企业版】 | SQLE 文档 - + @@ -12,7 +12,7 @@
    版本:v2

    创建项目【企业版】

    本文介绍如何在SQLE平台创建项目。 SQLE平台通过引入项目实现业务、资源的隔离,项目内创建的工单及扫描任务都将带有项目属性,仅项目成员可查看、操作。

    使用场景

    企业内容存在多个业务,且各个业务之间的数据源、工单、扫描任务可能由不同团队在负责,希望不同团队之间的数据相互隔离。此时,可在平台内以不同项目的行为去管理多个业务资源(数据源、工单、扫描任务等)。

    前置条件

    创建新项目时,需要用户拥有创建项目的权限,这部分内容可通过管理员账号配置,请参见平台用户管理,或由平台管理员直接创建项目。

    操作步骤

    拥有项目创建权限的用户/平台管理员点击页面顶部菜单栏项目,选择查看所有项目,点击列表右上角创建项目按钮

    • 输入项目名称。如:actionsky;
    • 输入项目描述。如:处理爱可生项目的数据源、工单及扫描任务;
    • 点击提交;

    执行结果

    • 项目创建完成后,可在项目列表中查看当前用户创建的项目。
    • 选中指定项目,可进入项目详情页面,查看并管理项目内的数据源、成员、审核规则模板、审核流程模板等内容。

    项目列表

    提示

    项目创建人在创建项目后会成为项目成员,承担项目管理员的身份,支持指定其他成员成为项目管理员,一个项目可对应多个项目管理员。

    后续步骤

    项目创建后,用户在进行创建工单、创建扫描任务的核心业务之前,还需要做如下操作:

    • 初始化工单、扫描任务的实施对象即数据源,具体操作请参见数据源管理
    • 初始化工单、扫描任务的使用人员以及使用人员的操作权限即项目成员,具体操作请参见成员管理
    • 初始化工单、扫描任务的审核规则模板,一个项目内可为不同数据源定义不同的规则模板,具体操作请参见规则模板管理
    • 若存在无需审核的SQL,可在白名单管理中初始化白名单,请参见白名单管理; 初始化工单的项目审核流程模板,一个项目内所有工单共用一个审核流程,具体操作请参见流程模板管理

    更多管理功能

    项目管理包含编辑及删除操作。

    • 项目编辑:项目创建人/平台管理员可在项目列表编辑项目条目信息,可编辑项为项目描述。
    • 项目删除:项目创建人/平台管理员可在项目列表删除项目条目。
      • 限制:删除项目前,需要确保项目下没有进行中的工单,才可成功删除。
      • 影响:删除项目后,该项目下的数据源、工单及扫描任务信息都将被删除。
    • 冻结项目:若有项目需要临时停用,项目创建人/平台管理员可在项目列表点击冻结项目。
      • 限制:冻结项目前,需要确保项目内没有未完成的工单。
      • 影响:冻结项目后,项目内所有操作均不可执行。
      • 后续:用户可点击启用操作,重新启用该项目。
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/rule-template-manager/index.html b/docs/v2/user-manual/project/rule-template-manager/index.html index a65b3ab2..de9a969a 100644 --- a/docs/v2/user-manual/project/rule-template-manager/index.html +++ b/docs/v2/user-manual/project/rule-template-manager/index.html @@ -4,7 +4,7 @@ 审核规则模板 | SQLE 文档 - + @@ -12,7 +12,7 @@
    版本:v2

    规则模版

    本文将介绍如何管理项目中的审核规则模板。 SQLE平台提供对应数据库类型的默认审核规则模板,是在长期实践中依据数据库特性总结出的一些规范的集合。审核规则模板在平台上的使用场景包括:创建工单时的审核、扫描任务的审核、SQL查询的审核。 同时也支持项目管理员基于实际业务需求定制审核规则模板,匹配具体的数据源审核需求。

    提示

    规则模版分为全局模版和项目模版,全局模版为超级管理员配置,所有项目都可见和使用;项目模版由超级管理员或者项目拥有者配置,仅在项目内使用

    提示

    每个规则模版内可独立配置规则的级别和参数

    使用场景

    在实际生产中,不同业务/不同数据源对上线的SQL存在不同审核要求,在SQLE平台中,项目管理员可通过审核规则模板为不同的数据源配置不同的审核规则。

    前置条件

    项目管理员进入指定的项目

    创建规则模板

    入口

    项目管理员点击左侧导航栏【规则模板】菜单,点击项目规则模板列表中的【创建规则模板】按钮。

    步骤一:输入基本信息

    • 模板名称:命名当前规则模板,须以字母开头,只能包含字母、数字、中划线和下划线。如:test
    • 模板描述:补充描述模板的其他信息。如:用于测试规则模板触发的告警等级
    • 数据库类型:选择该规则模板应用的数据库类型,当前支持的数据库类型包括MySQL、TiDB、DB2、SQL Server、OceanBase For MySQL、Oracle、PostgreSQL、达梦。

    步骤二:选择要启用/禁用的规则

    • 编辑规则告警等级:当前可设置项为普通、提示、警告、告警
    • 编辑规则参数默认值

    步骤三:提交规则模板

    执行结果

    成功创建自定义审核规则模板后,项目管理员可查看已创建的自定义规则模板及其对应的数据库类型。

    审核规则模板

    后续步骤

    • 设置数据源的审核规则模板:用户可为不同数据源设置相同或者不同的审核规则模板,具体操作请参见数据源管理
    • 创建工单:工单中SQL的审核将依据该数据源配置的审核规则模板,请参见工单说明
    • 创建智能扫描任务:智能扫描任务中SQL的审核将依据该数据源配置的审核规则模板,请参见扫描任务说明

    更多操作

    • 导入规则模板:可以导入其他项目中形成的规则模板文件
    • 编辑规则模板:编辑规则模板的基本信息及应用的规则
    • 删除规则模板:删除自行创建的规则模板
      • 限制:当已有数据源绑定了该规则模板,该规则模板不可被删除
    • 克隆规则模板:克隆当前的模板,克隆的规则模版只会继承源模版所有启用的规则、以及变更过的规则等级和阈值。克隆出的新规则模版的模版名称等基本信息需要手动填写。
    • 导出规则模板:导出当前选中的规则模板,以json格式下载规则模板内容。
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/whitelist-manager/index.html b/docs/v2/user-manual/project/whitelist-manager/index.html index 57342804..c7f2839d 100644 --- a/docs/v2/user-manual/project/whitelist-manager/index.html +++ b/docs/v2/user-manual/project/whitelist-manager/index.html @@ -4,7 +4,7 @@ 白名单管理【企业版】 | SQLE 文档 - + @@ -12,7 +12,7 @@
    版本:v2

    白名单【企业版】

    本文介绍如何增加、编辑、删除项目中的白名单。 SQLE在企业版中提供白名单功能,便于用户在特定场景下规避具体规则的审核。 添加在SQL审核白名单中的语句,在提交工单申请时,不受审核规则的约束。。

    提示

    白名单目前支持两种方式匹配SQL,字符串匹配和SQL指纹匹配,前者需要SQL内容一致,后置匹配同类型的SQL

    使用场景

    当已知一些 SQL 存在不规范之处,但又想忽略时,可以将SQL语句添加至白名单。

    前置条件

    项目管理员进入指定的项目

    添加白名单

    项目管理员点击左侧导航栏【白名单】菜单,点击白名单列表右上角的【添加白名单】按钮。

    • 选择匹配模式:提供以下两种方式
      • 字符串匹配:若选择通过字符串匹配,则将应用于指定SQL语句。
      • SQL指纹匹配:若选择通过SQL指纹匹配,则应用于语句结构一致的SQL。
    • 输入白名单描述:用以提示该条白名单SQL的应用场景
    • 输入SQL语句

    执行结果

    成功添加白名单后,可以看到当前项目内所有的项目白名单及匹配模式

    whitelist

    后续步骤

    • 创建工单:添加白名单后,可继续创建工单,白名单中的语句将不会触发审核,请参见工单说明
    • 创建智能扫描任务:添加白名单后,审核将跳过白名单中的语句,请参见扫描任务说明

    更多操作

    • 编辑白名单:项目管理员/成员可修改已创建的白名单语句
    • 删除白名单:项目管理员/成员可删除已创建的白名单语句
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/workflow-template-manager/index.html b/docs/v2/user-manual/project/workflow-template-manager/index.html index 481df22a..5b786faa 100644 --- a/docs/v2/user-manual/project/workflow-template-manager/index.html +++ b/docs/v2/user-manual/project/workflow-template-manager/index.html @@ -4,7 +4,7 @@ 审核流程模板 | SQLE 文档 - + @@ -14,7 +14,7 @@ 一个项目有且仅有一个审核流程模板。

    提示

    每个项目对应使用一个流程模版,项目创建后会初始化一个默认模版,用户可根据实际情况调整

    提示

    工单审核步骤若选择匹配所有拥有审核权限的用户时对应的数据源没有对应的人员则默认指定管理员进行审批操作

    警告

    修改流程模版仅对之后的工单有效,之前的工单流程步骤不变

    使用场景

    一个业务团队中,开发需要在指定数据源上执行SQL,上线的SQL需要符合DBA约定了的安全以及性能规范。因此,SQLE为工单场景提供了不同人员之间的协作工作流,即审核流程。

    前置条件

    项目管理员进入指定的项目 项目管理员已添加项目成员/成员组

    配置审核流程

    项目管理员点击左侧导航栏流程模板菜单, 点击修改当前审批流程模板按钮

    设定模板的基本信息

    设置允许创建工单的最高审核等级

    当前提供四种审核等级,包括:

    • 普通
    • 提示
    • 告警
    • 错误

    若设置“运行查询的最高审核等级”为warn,则审核结果小于等于warn的SQL都可以执行.

    设置流程节点

    审核流程自工单发起开始,通过设置的审核步骤后,最后以执行上线结束

    第一步 工单发起

    这一步骤通常指代项目成员创建工单

    第二步 工单审核

    配置审核节点后,对应审核操作人在该步骤可以执行审核通过或驳回操作

    • 选择审核人类型,可以选择指定审核人或匹配拥有数据源审核权限的成员
    • 添加步骤描述:用以补充说明步骤信息
    • 添加审核步骤:审核流程模板最多可设置4个审核节点,也可不设置审核步骤
    提示
    • 若选择指定审核人
      • 需要项目管理员指定项目成员
      • 最少需要添加一个指定人,最多只能添加三个指定人
      • 指定的审核人可以没有工单审核权限
    • 若选择匹配拥有数据源审核权限的成员
      • 将按实例匹配数据源上拥有审核权限的成员
      • 如果创建工单时没有任何用户拥有此数据源工单审核权限, 则工单审核人将会被指定为项目管理员

    第三步 工单上线:执行人在该步骤可以执行上线或驳回操作。

    • 选择审核人类型,当前提供两种方式:指定上线人或匹配拥有数据源上线权限的成员
    • 添加步骤描述
    提示
    • 若选择指定审核人
      • 需要项目管理员指定项目成员
      • 最少需要添加一个指定人,最多只能添加三个指定人
      • 指定的上线人可以没有工单上线权限
    • 若选择匹配拥有数据源上线权限的成员
      • 将按实例匹配数据源上拥有上线权限的成员
      • 如果创建工单时没有任何用户拥有此数据源工单上线权限, 则工单上线人将会被指定为项目管理员

    第四步 提交审核流程模板

    提交审核流程后,流程修改之前创建的工单仍以提交工单时的审核流程执行,流程修改后的创建的工单将以当前的审核流程执行流转。

    执行结果

    提交审核流程模板后,可查看当前设置的审批流程模板涉及的步骤节点,及各步骤的审核人。 审核流程模板

    后续步骤

    创建工单:创建审核流程模板后,成员可进入项目中创建工单,请参见:创建工单

    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/workflow/audit-workflow/index.html b/docs/v2/user-manual/project/workflow/audit-workflow/index.html index 7d539097..6ef6d01e 100644 --- a/docs/v2/user-manual/project/workflow/audit-workflow/index.html +++ b/docs/v2/user-manual/project/workflow/audit-workflow/index.html @@ -4,7 +4,7 @@ 审核工单 | SQLE 文档 - + @@ -13,7 +13,7 @@ 自动审核通常在创建工单时执行,本节主要介绍人工审核部分。

    使用场景

    实际生产中会存在业务变更、业务上线,比如初始化构建业务库、跑批等,当工单创建后,通常需要审核人员执行审批操作,审批过程中,审批用户可选择审核通过或全部驳回。

    前置条件

    工单已被创建

    操作步骤

    步骤一 查看待审核的工单

    提示
    • 入口一:可在dashboard中查看待自己审核的工单
    • 入口二:进入项目的工单列表,筛选工单状态为待审核,查看项目内待审核的工单

    步骤二 点击待审核的工单名称,进入查看工单详情

    工单详情页信息包含以下几个方面

    • 工单基础信息:包括工单名称、工单创建人、工单创建时间及工单描述
    • 工单进度:查看当前工单的执行进度,及工单整体流经的流程节点,流程节点与审核流程模板中设置的节点保持一致
    • 工单审核结果查看:
      • 概览:查看工单的整体概况信息,显示工单整体应用的数据源及审核情况
      • 按数据源查看:按数据源查看数据源上的SQL及其审核结果,并查看分析结果,也可下载审核报告、下载SQL语句、去重SQL

    步骤三 审核通过或驳回工单

    • 审核通过:成员查看工单详情后,若审核通过,可点击【审核通过】按钮,完成审核;
    • 全部驳回:若审核不通过,可点击【全部驳回】按钮,并填写驳回原因,工单将返回至工单创建人处

    执行结果

    • 审核通过:若点击【审核通过】,工单将按照审核流程模板流转至下一操作节点,状态变更为待审核或待上线 approve
    • 全部驳回:若点击【全部驳回】,工单状态将变更为已驳回,工单进度栏将提示提交的驳回原因,工单将返回至创建人重新修改,并重新提交工单审核,或直接关闭工单 deny

    后续步骤

    • 审核工单:若工单涉及其他审核流程节点,工单将继续流转至下一审核节点审核
    • 上线工单:若工单不涉及其他审核流程节点,工单将流转至上线人处执行上线,可参考上线工单
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/workflow/create-workflow/index.html b/docs/v2/user-manual/project/workflow/create-workflow/index.html index 166ca6ad..f4ece923 100644 --- a/docs/v2/user-manual/project/workflow/create-workflow/index.html +++ b/docs/v2/user-manual/project/workflow/create-workflow/index.html @@ -4,7 +4,7 @@ 创建工单 | SQLE 文档 - + @@ -12,7 +12,7 @@
    版本:v2

    创建工单

    工单是SQLE提供的在线化SQL上线方式。研发人员可通过创建工单,提请需要审批的SQL语句。

    使用场景

    实际生产中会存在业务变更、业务上线,比如初始化构建业务库、跑批。此时,需要针对某个数据库执行一批SQL。用户可通过SQLE创建工单,输入SQL语句或者上传SQL脚本。

    前置条件

    • 项目管理员已添加数据源;

    操作步骤

    步骤一:填写工单基本信息

    创建工单前,需要为工单指定唯一的工单名称,并填写工单说明。

    • 填写工单名称:
      • 工单名称支持中英文,须以英文开头;
      • 工单名称可自行填写;若未填写,平台将根据使用的数据源及添加时间组合填充工单名称;
    • 填写工单描述:输入工单描述信息,限3000个字符;

    步骤二:上传SQL语句并审核

    需要填写工单中涉及的SQL语句,执行审核操作,SQLE会根据数据源配置的审核规则模板,自动进行SQL语句的规则审核,并在线反馈审核结果。

    • 选择数据源:表示当前SQL最终会应用到哪个数据源;
      • 社区版:一个工单内仅支持选择一个数据源;
      • 企业版:一个工单内支持添加多个数据源;
    • 是否选择相同SQL:当添加多个数据源时,可设置是否选择相同SQL;
      • 使用相同SQL模式,
        • 限制:数据源的数据库类型相同;
        • 效果:对不同数据源下发相同SQL;
      • 若不使用相同SQL模式
        • 效果:对不同数据源下发不同SQL;
    • 选择数据库:选择要执行的数据库,相当于执行 use 语句;
      • 若未选择数据库,工单上线后,将脱库执行下发的SQL;
    • 选择审核SQL语句上传方式:平台提供三种上传方式,包括在线输入SQL语句、上传SQL文件、上传MyBatis的XML文件;
      • 在线输入SQL语句:项目成员可在平台编辑器中直接输入SQL;
      • 上传SQL文件:项目成员可选择本地的SQL文件上传;
      • 上传Mybatis的XML文件:项目成员可选择本地的XML文件上传;
        • 限制:平台仅支持审核XML文件中上传的SQL语句,尚不支持对其创建工单;
    • 点击审核,显示平台审核结果;
    提示

    在线输入SQL的场景下,平台支持对输入框中的SQL进行美化,以此提高SQL可读性。

    注:当前支持SQL美化的数据源类型包括:

    • MySQL
    • DB2
    • SQL Server
    • Oceanbase For MySQL
    • Oracle
    • PostgreSQL

    步骤三:查看审核结果

    将根据数据源不同,展示不同数据源下的SQL审核结果。 审核结果由以下几部分组成:

    • 数据源标签:显示当前SQL操作的数据源,当有多个数据源时,可切换数据源标签,查看不同数据源上的审核情况;
    • 数据源上SQL的整体审核通过率、审核结果评分及操作的数据库;
    • 数据源上每条SQL的审核结果、SQL语句及执行状态,可分析SQL;
    • 功能区:
      • 下载审核报告:查看当前数据源下审核的sql语句及其审核结果;
      • 下载SQL语句:下载文件,可查看当前数据源下审核的SQL语句及其审核结果;
      • 设置是否去重:若SQL语句结构一致,去重后将仅显示去重后的SQL;
    审核通过率计算方式
    审核通过率=正常sql/sql总数
    审核结果等级为notice,warn,err的sql均为非正常sql
    审核结果评分计算方式
    1.Error以上级别SQL出现率 = Error级别SQL/SQL
    2.Warn以上级别SQL出现率 = (Error级别SQL+ Warn级别SQL) /SQL
    3.Warn以上级别SQL出现率 = (Error级别SQL+ Warn级别SQL+ Notice级别SQL) /SQL
    4.总分 = 审核通过率 x 30 +
    (1 - Error以上级别SQL出现率) x 15 +
    (1 - Warn以上级别SQL出现率) x 10 +
    (1 - Notice以上级别SQL出现率) x 5 +
    (Error以上级别SQL出现概率 == 0 ? 15 : 0) +
    (Warn以上级别SQL出现概率 == 0 ? 10 : 0) +
    (Notice以上级别SQL出现概率 == 0 ? 5 : 0) +
    (Error以上级别SQL出现概率 <0.1 ? 5 : 0) +
    (Warn以上级别SQL出现概率 <0.1? 3 : 0) +
    (Notice以上级别SQL出现概率 <0.1 ? 2 : 0)

    备注: 三元表达式 ==> ( 条件 ? 如果条件为真则为此值 : 如果条件为假则为此值 )

    步骤四:点击创建工单

    完成创建后,进入工单列表,即可看到该工单显示为待审核。

    执行结果

    创建工单后,可在工单列表查看已创建的所有工单。 list

    后续步骤

    • 审核工单:工单创建完成后,将依据审核流程模板的设定,流转至指定的审核成员处,审核成员需登录后进行审核操作,详情可参见审核工单
    • 导出工单:当用户需要审计当前已创建的工单时,可选择筛选条件后,点击工单列表的导出工单按钮,以csv格式导出满足条件的工单信息。
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/workflow/exec-workflow/index.html b/docs/v2/user-manual/project/workflow/exec-workflow/index.html index 3e89daf1..d0ed5e61 100644 --- a/docs/v2/user-manual/project/workflow/exec-workflow/index.html +++ b/docs/v2/user-manual/project/workflow/exec-workflow/index.html @@ -4,14 +4,14 @@ 上线工单 | SQLE 文档 - +
    版本:v2

    上线工单

    本章详细介绍用户如何进行上线。

    • 从数据源角度,支持多数据源同时上线、单数据源分别上线;
    • 从上线时间角度,支持立即上线、定时上线;
    • 从上线方式角度,支持平台直接上线,也支持后台执行后,线上标记为人工上线;

    使用场景

    实际生产中上线环节也会存在业务变更等诸多情况,除了对工单做整体上线操作外,还存在以下需求:

    • 需要根据数据源分别上线;
    • 需要避开业务高峰期,在指定时间上线;
    • 已在后台执行SQL,需要线上标记为人工上线;

    为此,SQLE平台也提供了多种上线方式,满足用户的上线需求。

    前置条件

    工单状态为待上线;

    操作步骤

    步骤一 进入待上线的工单

    • 方式一:上线操作人可在dashboard中点击“需上线”标签,查看当前需要上线的工单;
    • 方式二:上线操作人也可在项目的工单列表中,筛选工单状态为“待上线”的工单,查看当前需要上线的工单;

    步骤二 设置工单上线

    根据使用场景,区分为以下四种工单上线方式;

    1.批量立即上线

    针对一个工单内涉及多个数据源,且多个数据源需要同时立即上线的,点击批量上线,平台将对工单内涉及的所有数据源执行上线操作;

    2.单个数据源立即上线

    点击立即上线后,平台将立即连入指定数据源,并执行SQL变更;

    3.单个数据源定时上线

    点击定时上线,并设置上线时间,平台将于指定时间上线SQL; 用户也可取消定时上线,重新设置上线方式。

    4.标记为人工上线

    针对已经线下执行过的工单SQL,用户可点击标记为人工上线按钮,切换工单状态;

    提示

    上线人仍可选择全部驳回:用户判定工单中存在不合规、性能问题等SQL语句时,则可点击全部驳回,让工单创建人修正后再次进入审核流程。

    备注

    针对上线中的工单,用户可点击“中止上线”按钮,中断上线流程,以避免当前的上线操作影响正常业务。

    执行结果

    result

    - + \ No newline at end of file diff --git a/docs/v2/user-manual/project/workflow/intro/index.html b/docs/v2/user-manual/project/workflow/intro/index.html index 0b603ef7..b7beb28b 100644 --- a/docs/v2/user-manual/project/workflow/intro/index.html +++ b/docs/v2/user-manual/project/workflow/intro/index.html @@ -4,14 +4,14 @@ 功能说明 | SQLE 文档 - +
    版本:v2

    功能说明

    很多公司通常设有 DBA(Database administrator) 这个职位,他们负责在系统上运行数据库,执行备份,执行安全策略等日常数据库运维的工作。其中,DBA一项重要的工作是规范研发人员在应用程序中使用的 SQL 语句。

    场景举例:

    产品在迭代过程中,某个表需要新增一个字段,这会涉及到改表操作。 当前处理方法:DBA 依据数据库规范评估SQL语句的合理性。如果评估没有问题,则将修改操作应用到线上数据库。如果公司对于这类操作比较严格,在上线前,可能还需要经过层层审批。所有上线流程中的人都同意后,再将修改操作应用到数据库。

    由此引出的问题:

    • SQL上线牵涉范围较广,缺乏规范化流程支撑
    • 工单运转节点不透明,需要DBA去手动通知

    定位

    SQLE审核工单的出现主要是为了解决上述整个过程中的规范化、流程化的问题。

    • 通过引入审核规则模板,在人工审核前,首先利用规范化的DBA审核经验进行平台预审,提高整体审核效率
    • 通过引入审核流程模板,将SQL语句的流程节点透明化,并明确操作权限归属,提供规范化流程支持

    流程

    process

    状态说明
    待审核创建完的工单自动进入「待审核」状态;该状态的工单将由项目流程设置的审核人进行审核。
    待上线工单的每一道审核流程均执行通过后,工单状态将由「待审核」状态变更为「待上线」状态;上线人此时可选择立即上线或批量驳回,或针对具体数据源进行立即上线或定时上线。设置定时上线后,工单状态仍为「待上线」,到达预设的上线时间后,变更为「正在上线」状态;设置定时上线但还未到达上线时间的工单,可以由上线人取消定时上线,可以再次对工单进关闭、定时上线/立即上线等操作。
    正在上线当上线人进行立即上线,工单会短暂的进入「正在上线」阶段,该阶段的时间取决于SQL是否上线完毕;当上线人选择定时上线,定时上线的工单到预设时间会自动执行SQL上线,此时工单也会由「待上线」状态变更为「正在上线」状态;SQL上线遇到阻塞的工单会一直处于「正在上线」状态。
    上线成功SQL上线成功的工单会进入「上线成功」状态;上线成功标志工单流转结束,无法再对工单进行操作。
    上线失败SQL上线失败的工单会进入「上线失败」状态;上线失败同样标志工单流转结束,无法再对工单进行操作
    已驳回「待审核」的工单可以由每级的审批人进行审核,若审核不通过,被驳回,工单将进入「已驳回」状态;此状态的工单可以由创建人或者超管用户进行修改并重新提交工单,流程将被重置。
    已关闭状态为「待审核」、「待上线」或「已驳回」的工单可以由创建人或者超管用户在任何时刻关闭工单,「已关闭」状态标志工单流转结束,无法再对工单进行操作;已经进入上线流程的工单无法关闭。
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/sql-workbench/how-to-configure/index.html b/docs/v2/user-manual/sql-workbench/how-to-configure/index.html index b9ba07bc..645a55d8 100644 --- a/docs/v2/user-manual/sql-workbench/how-to-configure/index.html +++ b/docs/v2/user-manual/sql-workbench/how-to-configure/index.html @@ -4,14 +4,14 @@ 配置方法 | SQLE 文档 - +
    版本:v2

    配置方法

    安装CloudBeaver

    提示

    SQLE目前支持的CloudBeaver版本包括22.2.0、22.2.1、22.2.3、22.3.1版本

    docker 部署:https://github.com/dbeaver/cloudbeaver/wiki/Run-Docker-Container

    源码安装:https://github.com/dbeaver/cloudbeaver/wiki/Build-and-deploy

    配置CloudBeaver

    步骤一 修改CloudBeaver配置文件cloudbeaver.conf

    cloudbeaver.conf配置文件通常在conf路径下

    配置文件名是否必须修改修改内容修改原因
    cloudbeaver.conf将server.rootURI的值改为'/sql_query';将server.serviceURI 的值改为 '/api/'(server.serviceURI默认就是/api/)SQLE目前只支持代理这个路由

    config

    步骤二 重启CloudBeaver

    配置cloudbeaver后,需要重启cloudbeaver以使配置项生效

    步骤三 初始化CloudBeaver

    • 使用 http://{IP}:8978/sql_query#/ 可以进入CloudBeaver即代表配置正确
    • 设置管理员用户名及密码:该用户名及密码将用于后续SQLE配置文件中
    • 确认security服务开启
    • 完成设置,登录管理员账号成功,则初始化成功

    步骤四 配置完成后检查

    • 确认角色正确:[访问管理] - [角色] 处应当只有admin和user两个角色

    • 确认没有冲突用户:[访问管理] - [用户] 处不应当有名称格式为 sqle-xxx的用户存在, 这会与SQLE自动创建的用户冲突

    提示

    用admin 跳转Cloudbeaver的时候,SQLE会在Cloudbeaver创建一个新的用户叫sqle-admin ,同时把这个用户缓存到数据库里,每次跳转先去数据库里找这个用户,如果已经存在,就会拿这个用户直接去登陆cb

    配置SQLE

    步骤一 修改SQLE配置文件, 增加SQL工作台参数

    打开SQLE配置文件,配置文件一般位于SQLE工作目录的etc目录下, 文件名一般为sqled.yml 配置文件新增参数sql_query_config

    参数字段参数说明
    sql_query_configsql工作台参数, 此参数与 sqle_config在同一级

    在sql_query_config参数下增加子参数,子参数在 sql_query_config 的下一级, 需要注意缩进

    参数字段参数说明
    cloud_beaver_hostcloudbeaver IP地址
    cloud_beaver_portcloudbeaver访问端口
    cloud_beaver_admin_usercloudbeaver管理员账户
    cloud_beaver_admin_passwordcloudbeaver管理员密码

    配置文件内容参考:

    sqleconfig

    步骤二 重启SQLE

    需要重启以使配置项生效。

    步骤三 检查SQLE是否已成功集成CloudBeaver

    SQLE重启后进入平台,点击打开SQL工作台,若成功跳转,则说明当前SQLE平台已成功集成CloudBeaver。

    提示
    • 平台管理员账户需要有 [添加/修改/删除][用户/实例/权限] 的权限
    • SQLE集成CloudBeaver后请勿使用CloudBeaver的管理员账户直接操作CloudBeaver的用户/实例/权限

    常见问题

    如果在配置CloudBeaver时,出现跳转不正确等问题,可参考如何解决CloudBeaver跳转不正确的问题

    - + \ No newline at end of file diff --git a/docs/v2/user-manual/sql-workbench/how-to-quick-deploy/index.html b/docs/v2/user-manual/sql-workbench/how-to-quick-deploy/index.html index bd8f23ca..44b93ef3 100644 --- a/docs/v2/user-manual/sql-workbench/how-to-quick-deploy/index.html +++ b/docs/v2/user-manual/sql-workbench/how-to-quick-deploy/index.html @@ -4,13 +4,13 @@ 使用定制包快速搭建环境 | SQLE 文档 - +
    版本:v2

    使用定制包快速搭建环境

    SQLE在原有CloudBeaver release_22_2_0 分支的基础上, 增加了对OceanBase 和 TiDB 的支持, 用户无需再手动配置环境,可直接使用SQL工作台功能。

    cb

    定制分支与原分支区别详情

    • 支持并默认启用 OceanBase 驱动
    • 支持并默认启用 TiDB 驱动
    • 默认访问路由调整为 /sql_query, 便于与SQLE集成
    • 默认会话超时时间调整为12小时(之前是30分钟)
    • 移除了默认创建的 PG 演示实例和 SQLite 演示实例
    • docker镜像名调整为 actiontech/sqle-cloudbeaver:22_2_0
    • 优化打包方式, 大幅提高打包效率
    • 默认主题改为暗色

    项目地址

    定制包下载地址

    https://github.com/actiontech/cloudbeaver/releases/tag/sqle.22.2.0

    使用说明

    编译和运行项目

    与原项目编译运行方式保持一致

    编译docker镜像

    进入项目的 deploy/docker 目录, 然后执行 ./make-docker-container.sh

    运行docker镜像

    • 方式一: 进入项目的 deploy/docker 目录, 然后执行 ./run-docker-container.sh
    • 方式二: 手动启动镜像, 镜像参数和 原项目镜像参数 保持一致

    已有CloudBeaver环境升级为定制环境

    CloudBeaver程序目录下应当有以下几个文件

    cb

    将CloudBeaver程序目录下的conf目录和workspace目录移动到定制CloudBeaver程序目录下(覆盖原目录), 随后停止旧CloudBeaver, 运行新CloudBeaver即可

    - + \ No newline at end of file diff --git a/docs/v2/user-manual/sql-workbench/how-to-use/index.html b/docs/v2/user-manual/sql-workbench/how-to-use/index.html index 1a22c88c..de242299 100644 --- a/docs/v2/user-manual/sql-workbench/how-to-use/index.html +++ b/docs/v2/user-manual/sql-workbench/how-to-use/index.html @@ -4,13 +4,13 @@ 使用定制包快速搭建环境 | SQLE 文档 - +
    版本:v2

    使用定制包快速搭建环境

    SQLE在原有CloudBeaver release_22_2_0 分支的基础上, 增加了对OceanBase 和 TiDB 的支持, 用户无需再手动配置环境,可直接使用SQL工作台功能。

    cb

    定制分支与原分支区别详情

    • 支持并默认启用 OceanBase 驱动
    • 支持并默认启用 TiDB 驱动
    • 默认访问路由调整为 /sql_query, 便于与SQLE集成
    • 默认会话超时时间调整为12小时(之前是30分钟)
    • 移除了默认创建的 PG 演示实例和 SQLite 演示实例
    • docker镜像名调整为 actiontech/sqle-cloudbeaver:22_2_0
    • 优化打包方式, 大幅提高打包效率
    • 默认主题改为暗色

    项目地址

    定制包下载地址

    https://github.com/actiontech/cloudbeaver/releases/tag/sqle.22.2.0

    使用说明

    编译和运行项目

    与 原项目编译运行方式 保持一致

    编译docker镜像

    进入项目的 deploy/docker 目录, 然后执行 ./make-docker-container.sh

    运行docker镜像

    • 方式一: 进入项目的 deploy/docker 目录, 然后执行 ./run-docker-container.sh
    • 方式二: 手动启动镜像, 镜像参数和 原项目镜像参数 保持一致

    已有CloudBeaver环境升级为定制环境

    CloudBeaver程序目录下应当有以下几个文件

    cb

    将CloudBeaver程序目录下的conf目录和workspace目录移动到定制CloudBeaver程序目录下(覆盖原目录), 随后停止旧CloudBeaver, 运行新CloudBeaver即可

    - + \ No newline at end of file diff --git a/docs/v2/user-manual/sql-workbench/introduction/index.html b/docs/v2/user-manual/sql-workbench/introduction/index.html index 3026031f..0673d7a9 100644 --- a/docs/v2/user-manual/sql-workbench/introduction/index.html +++ b/docs/v2/user-manual/sql-workbench/introduction/index.html @@ -4,7 +4,7 @@ 功能说明 | SQLE 文档 - + @@ -12,7 +12,7 @@
    版本:v2

    功能说明

    CloudBeaver Community 是一个开源的 Web 数据库可视化管理工具,支持 PostgreSQL, MySQL, MariaDB, SQL Server, Oracle, DB2, Firebird, H2, Trino 等数据库。

    SQLE通过集成CloudBeaver,使得SQLE具备数据库操作的能力,方便开发或DBA在SQLE中方便地操作数据库

    • SQL工作台会自动同步SQLE的用户信息和实例信息, 避免无权限的人进行操作
    • 可通过参数配置及SQL查询审核对SQL做限制和审核,有效避免不合规的查询

    使用场景

    当业务人员需要对数据库进行数据检索时,一些查询SQL可能会造成数据库性能问题甚至夯死。但在传统的使用场景中,DBA很难对业务人员的行为进行追踪和管控,无法限制有问题的SQL在生产环境执行。

    因而SQLE平台集成CloudBeaver数据库可视化管理工具,满足在线SQL查询需求的同时,进行业务人员的操作权限控制,并对业务人员的SQL进行审计,拒绝不合规的SQL运行。

    前置条件

    安装CloudBeaver并完成配置,参考SQL工作台配置方法

    操作步骤

    步骤一 SQLE平台配置用户

    • 创建一个有SQL查询权限的角色
    • 将成员关联至该角色

    步骤二 SQLE平台配置数据库实例审核等级

    创建/修改一个实例, 开启SQL查询,并设置运行查询的最高审核等级,并提交修改

    参数名参数含义
    SQL查询是否需要审核只有开启此项,才会在执行SQL查询时进行审核
    运行查询的最高审核等级如果审核等级低于或等于这个等级将会放行, 高于这个等级将无法执行

    步骤三 登录CloudBeaver

    自动登录说明:在登陆SQLE时会检测CloudBeaver是否处于登陆状态, SQLE将会自动使用当前SQLE用户登录CloudBeaver。

    警告

    若当前用户无SQL查询权限,则无权登录。

    步骤四 下发SQL

    选择需要操作的数据源,并输入SQL语句点击运行,可查看SQL查询结果

    操作结果

    审核失败的SQL将会被拦截, 并报出错误, 可以点击详情查看错误详情 error

    按要求修改SQL, 再次执行, 如果审核通过将会执行当前SQL success

    - + \ No newline at end of file diff --git a/docs/v2/user-manual/sys-configuration/configuration/index.html b/docs/v2/user-manual/sys-configuration/configuration/index.html index aaa3c035..ad1eb5ab 100644 --- a/docs/v2/user-manual/sys-configuration/configuration/index.html +++ b/docs/v2/user-manual/sys-configuration/configuration/index.html @@ -4,14 +4,14 @@ 全局配置 | SQLE 文档 - +
    版本:v2

    全局配置

    SQLE支持管理员对平台基础配置进行统一管理,目前支持修改的配置项包括:

    • 已完成的工单自动过期时间;
    • 操作记录过期时间;
    • URL地址前缀;

    已完成的工单自动过期时间

    使用场景

    SQLE会定时回收已完成的工单,目前该过期时间默认为30天。如果用户需要自定义过期时间,可在全局配置中修改。

    填写范例

    • 进入全局配置页面,点击修改
    • 点击已完成的工单过期时间输入框;
    • 输入预期的过期时间,例如:360小时;
    • 点击提交,保存配置;
    • 此时查看项目工单列表,已完成15天以上的工单将被删除;

    操作记录过期时间

    使用场景

    SQLE会定时回收已产生的操作记录,目前该过期时间默认为90天。如果用户需要自定义过期时间,可在全局配置中修改。

    填写范例

    • 进入全局配置页面,点击修改
    • 点击操作记录过期时间输入框;
    • 输入预期的过期时间,例如:2小时;
    • 点击提交,保存配置;
    • 此时查看平台操作记录,仅显示2个小时内产生的操作行为;

    URL地址前缀

    使用场景

    配置消息推送或流程对接后,用户可以从外部应用程序中直接查看待操作提示。此时,如果用户需要跳转到SQLE,进一步查看工单详细信息,则可以在全局配置中更改URL地址前缀,以满足访问需求。

    填写范例

    • 进入全局配置页面,点击修改
    • 点击URL地址前缀输入框;
    • 输入URL前缀,格式为http://ip:port,例如:http://localhost:10000 ;
    • 点击提交,保存配置;
    • 创建一条工单,待审批人在第三方应用中可查看工单链接,点击链接可快速跳转至SQLE平台; configuration-url
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/sys-configuration/customize/index.html b/docs/v2/user-manual/sys-configuration/customize/index.html index df296066..46f1011b 100644 --- a/docs/v2/user-manual/sys-configuration/customize/index.html +++ b/docs/v2/user-manual/sys-configuration/customize/index.html @@ -4,13 +4,13 @@ 个性化设置【企业版】 | SQLE 文档 - +
    版本:v2

    个性化设置【企业版】

    SQLE支持对网站logo及标题进行自定义设置,满足企业用户的个性化需求。

    使用场景

    若用户对企业一致性有需求,需要变更所使用的网站logo及标题,以增加企业辨识度时,可以使用平台的个性化设置进行变更。

    操作步骤

    • 用户点击系统设置,选择个性化设置
    • 编辑标题:用户点击个性化标题后的编辑icon,输入新名称test,回车键保存后,页面标题将变更为test
    • 编辑个性化logo:用户点击上传及更新icon,选择需要的图片,点击打开后,页面logo将变更为所选图片;
      • 限制:图片大小不可超过102,400 Bytes;

    customize

    - + \ No newline at end of file diff --git a/docs/v2/user-manual/sys-configuration/instance_syn/index.html b/docs/v2/user-manual/sys-configuration/instance_syn/index.html index 365a6e37..afda7f76 100644 --- a/docs/v2/user-manual/sys-configuration/instance_syn/index.html +++ b/docs/v2/user-manual/sys-configuration/instance_syn/index.html @@ -4,7 +4,7 @@ 外部数据源同步【企业版】 | SQLE 文档 - + @@ -14,7 +14,7 @@ sip

    3.针对需要同步的实例组添加项目标签

    SQLE同步时,将依据项目标签值,将实例同步至指定项目中 tag

    操作步骤

    • 进入SQLE平台,点击右上角菜单的“外部数据源同步”,进入同步任务页面
    • 添加同步任务,填写以下相关信息
      • 来源:目前仅支持DMP平台;
      • 地址:默认格式为http://ip:port;
      • 数据源类型:选择同步的数据源类型,如mysql;
      • 审核规则模板:选择数据源使用的规则模板;
      • 设置同步间隔:SQLE平台将按照指定的同步时间执行同步任务;
    • 点击“提交”按钮,SQLE会立即进行一次数据源同步。

    操作结果

    同步成功后进入对应项目,查看数据源列表页面,可以看到DMP上配置了SIP的数据源组已经被添加到SQLE平台,可以对这个数据源进行创建工单或创建扫描任务等操作。

    syn-result instance-syn

    后续操作

    管理员可编辑或删除同步任务,也可在同步周期之外,手动执行同步任务。

    - + \ No newline at end of file diff --git a/docs/v2/user-manual/sys-configuration/intro/index.html b/docs/v2/user-manual/sys-configuration/intro/index.html index e1386865..2cde0bd4 100644 --- a/docs/v2/user-manual/sys-configuration/intro/index.html +++ b/docs/v2/user-manual/sys-configuration/intro/index.html @@ -4,13 +4,13 @@ 功能说明 | SQLE 文档 - +
    版本:v2

    功能说明

    系统设置中可配置的内容包括全局配置、登录对接、流程对接、消息推送。

    • 全局配置:当前可配置工单过期时间及url
      • 工单失效时间:平台会定期清理已完成的工单,管理员可自定义工单过期的时间
      • URL地址前缀:当使用流程对接时,通常由外部平台访问SQLE工单详情,需要配置url地址前缀,配置能访问SQLE的url地址信息
    • 登录对接:用户除使用SQLE账号登录平台,也可使用LDAP及oAuth2.0的方式实现对接登录,可参考登录对接
    • 流程对接:使用流程对接,可在外部工作平台审批工单,目前支持钉钉审批,可参考流程对接
    • 消息推送:使用消息推送,可将工单状态变更推送到外部工作平台,目前支持对接邮箱、企业微信、飞书的方式,可参考消息推送
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/sys-configuration/login_syn/index.html b/docs/v2/user-manual/sys-configuration/login_syn/index.html index ba0265a1..7675ced0 100644 --- a/docs/v2/user-manual/sys-configuration/login_syn/index.html +++ b/docs/v2/user-manual/sys-configuration/login_syn/index.html @@ -4,14 +4,14 @@ 登录对接 | SQLE 文档 - +
    版本:v2

    登录对接

    当前登录对接已实现LDAP方式及Oauth2.0方式

    入口

    管理员账号,点击更多按钮,点击系统设置,跳转系统设置页面后,点击“对接登录”标签

    推送方式

    LDAP

    功能说明

    SQLE中支持通过配置的方式接入LDAP系统, 如同其他系统一样接受统一的用户管理, 以便于管理员管理SQLE中的用户, 也使得员工无需在使用一套公司内通用账号密码的同时单独记录SQLE的账号密码。 在SQLE中, 如果正确配置并启用了LDAP功能, 用户就可以在登录界面使用LDAP中记录的账号密码进行登录, SQLE会在员工第一次登录时同步此员工的账号和邮箱, 并在以后的登录中均通过LDAP校验此账户

    使用场景

    当组织配置了LDAP对接登录系统时,平台管理员可进行相关配置。

    前置操作

    已配置LDAP

    操作步骤

    点击修改,选择启用LDAP

    • LDAP服务器地址:用于LDAP登陆时SQLE找到LDAP服务器的位置
    • LDAP服务器端口:用于LDAP登陆时SQLE找到LDAP服务的工作端口
    • 连接用户DN:当用户登录时需要先使用管理用户登录到LDAP中查找出登录用户在LDAP中的DN, 再使用查找出的DN和登录用户填写的密码进行LDAP登录校验
    • 连接用户密码:连接用户DN登录时的密码
    • 查询根DN:用于限定SQLE中LDAP登录的作用范围
    • 用户属性名:用于LDAP用户登录时查询登录用户的DN, LDAP中此属性对应的值也将用作此用户第一次登录SQLE自动注册时的用户名
    • 用户邮箱属性名:SQLE将根据此属性名从LDAP中获取到用户的邮箱, 并将此邮箱用于此用户第一次登录SQLE自动注册时的用户邮箱

    后续操作

    修改后用户即可通过LDAP账号登录SQLE平台

    OAuth 2.0【企业版】

    功能说明

    SQLE中支持通过配置的方式接入OAuth 2.0系统, 如同其他系统一样接受统一的用户管理, 以便于管理员管理SQLE中的用户, 也使得员工无需在使用一套公司内通用账号密码的同时单独记录SQLE的账号密码

    在SQLE中, 如果正确配置并启用了OAuth 2.0功能, 用户就可以在登录界面使用第三方登录, SQLE会在员工第一次登录时要求用户绑定或自动创建一个SQLE用户, 并在以后的登录中可以使用OAuth 2.0用户登录, 也可以用绑定的SQLE用户账号密码登录

    使用场景

    当组织配置了OAuth 2.0对接登录系统时,平台管理员可进行相关配置。

    前置操作

    已配置OAuth 2.0

    操作步骤

    点击修改,选择启用OAuth 2.0

    • 应用ID:应用的唯一标识, 从要对接的平台申请 , 在OAuth2.0认证过程中,appid的值即为oauth_consumer_key的值
    • 应用密钥:appid对应的密钥,访问用户资源时用来验证应用的合法性。在OAuth2.0认证过程中,appkey的值即为oauth_consumer_secret的值
    • 外部访问SQLE的地址:格式为 http(s)://ip:port
    • oauth2登录授权页面地址:格式类似于 http(s)://ip:port/xxx
    • oauth2 access_token 获取地址:格式类似于 http(s)://ip:port/xxx
    • oauth2 user id 获取地址:格式类似于 http(s)://ip:port/xxx
    • 请求资源范围:此范围由验证服务器定义
    • access_token放置位置:SQLE会在获取用户ID时将access_token放在这个key对应的value中, 此参数会作为get请求的参数发送给用户ID获取地址
    • 用户ID保存位置:SQLE会尝试使用此key从第三方平台的响应中解析出用户ID,用户ID应当为唯一ID
    • 登录按钮文字
    提示

    当仅允许内网访问SQLE服务时,请确保回调地址的后缀为"/v1/oauth2/callback"。

    后续操作

    启用后SQLE登录界面出现其他方式跳转登录入口,点击,可跳转至对应登录页面

    - + \ No newline at end of file diff --git a/docs/v2/user-manual/sys-configuration/message_syn/index.html b/docs/v2/user-manual/sys-configuration/message_syn/index.html index 6f31cb00..00e1173c 100644 --- a/docs/v2/user-manual/sys-configuration/message_syn/index.html +++ b/docs/v2/user-manual/sys-configuration/message_syn/index.html @@ -4,7 +4,7 @@ 消息推送 | SQLE 文档 - + @@ -18,7 +18,7 @@ example
  • 当t1审核通过后,成员admin作为待上线人, admin手机号绑定的飞书账号下,收到一则待上线的工单通知; example
  • 当admin上线成功后,工单创建人将收到一则工单上线成功的消息; example
  • 根据以上示例,用户可了解飞书消息推送的部分场景。

    - + \ No newline at end of file diff --git a/docs/v2/user-manual/sys-configuration/process_syn/index.html b/docs/v2/user-manual/sys-configuration/process_syn/index.html index 6a6f55e2..53a791b9 100644 --- a/docs/v2/user-manual/sys-configuration/process_syn/index.html +++ b/docs/v2/user-manual/sys-configuration/process_syn/index.html @@ -4,7 +4,7 @@ 流程对接 | SQLE 文档 - + @@ -18,7 +18,7 @@ dingding-telconfig

    打开全局配置,配置SQLE的URL地址,配置URL地址后,用户可从钉钉跳转访问SQLE工单详情页面; globalurl

    4.利用钉钉进行审批

    当发生工单变化时,工单关联成员可在对应钉钉账号中收到通知,并进行相应的审批操作; dingding-flow

    - + \ No newline at end of file diff --git a/docs/v2/user-manual/sys-configuration/webhook/index.html b/docs/v2/user-manual/sys-configuration/webhook/index.html index ec7c5fdc..59e640b2 100644 --- a/docs/v2/user-manual/sys-configuration/webhook/index.html +++ b/docs/v2/user-manual/sys-configuration/webhook/index.html @@ -4,14 +4,14 @@ webhook配置 | SQLE 文档 - +
    版本:v2

    webhook配置

    Webhook是用户定义的自定义HTTP回调。它们通常由事件触发,例如SQLE中存在工单状态的变化,则会自动向用户配置的webhook URL发送HTTP请求。

    使用场景

    当用户配置了自定义API服务,想要在API服务中实时获取工单执行状态时,可在系统设置中配置webhook服务。在SQLE中配置回调地址后,工单状态一旦发生变更,即可在API服务中获取状态通知信息,无需定时登录SQLE平台以查询结果。

    提示

    当前会触发通知的事件有:

    • 有新工单被创建
    • 工单审核被通过
    • 工单审核被驳回
    • 工单被成功上线
    • 工单上线失败

    前置操作

    用户需在使用的API服务中生成用于接收回调通知的webhook url。

    备注

    当前webhook url仅支持http格式。

    操作步骤

    1. 以平台管理员账号登录, 进入系统设置-消息推送,选择webhook配置,并点击修改;
    2. 选择启用webhook;
    3. 填写webhook url:用于工单消息推送的 API 地址;
    4. 填写最大重试次数:默认3次,取值范围0-5。如果推送存在失败,每一个事件请求将最多连续3次执行推送,如3次都失败,则不再推送本次事件;
    5. 填写重试间隔:默认1秒,取值范围1-5。如果推送存在失败,重试时将以1s的时间间隔进行重试;
    6. 填写Token:云服务在发送通知时使用的访问令牌,参考规范:https://datatracker.ietf.org/doc/html/rfc6750;
    7. 提交保存配置;

    后续步骤

    用户点击“测试”,如配置正确,能在API服务端收到正确的调用测试信息: "This is a SQLE test notification\nIf you receive this message, it only means that the message can be pushed".

    接口文档

    SQLE POST 请求格式
    POST / HTTP/1.1
    Host: 192.168.21.34:8000
    Accept-Encoding: gzip
    Authorization: Bearer test123
    Content-Length: 239
    User-Agent: Go-http-client/1.1

    {"event":"workflow","action":"create","timestamp":"2023-05-18T15:45:25+08:00","payload":{"workflow":{"project_name":"test_project","workflow_id":"1658637666259832832","workflow_subject":"test_workflow","workflow_status":"wait_for_audit"}}}
    • "event":当前取值恒为 "workflow"(目前SQLE只支持工单通知);
    • "action":可能的取值有 ["create", "approve", "reject", "exec_success", "exec_failed"]。分别对应「工单创建」、「审核通过」、「审核驳回」、「上线成功」、「上线失败」;
    • "timestamp":表示请求发出的时间,RFC3339 格式;
    • "payload":表示该请求的主要业务内容,目前仅支持工单;
    • "workflow":表示该工单的当前信息,与 sqle 后端数据库中记录保持一致;

    注意事项

    • 用户配置的 token 会被放置在请求 Header 中的 Authorization 字段。参考规范:https://datatracker.ietf.org/doc/html/rfc6750 。SQLE对token字段没有任何限制。需要接受端根据自身情况决定是否使用 token;
    • 接收请求的服务端在收到请求后,需要返回 200 响应。否则 sqle 会打印返回 body 中的文本信息。
    • 在发送测试请求时,请确保接收请求的服务端运行正常。否则可能出现如下问题:
    {
    "code": 0,
    "message": "ok",
    "data": {
    "send_error_message": "Post \"http://192.168.21.34:8000\": dial tcp 192.168.21.34:8000: connect: connection refused"
    }
    }
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/user-manager/intro/index.html b/docs/v2/user-manual/user-manager/intro/index.html index 03d47675..4c912e67 100644 --- a/docs/v2/user-manual/user-manager/intro/index.html +++ b/docs/v2/user-manual/user-manager/intro/index.html @@ -4,13 +4,13 @@ 功能说明 | SQLE 文档 - +
    版本:v2

    功能说明

    用户中心包含用户管理、用户组管理及角色管理三个方面,由平台管理员操作,涉及用户、用户组的管理及角色权限的配置。

    • 用户管理:指平台用户的管理,由管理员创建用户或编辑用户基本信息,可参考用户管理
    • 用户组管理:当需要对一批用户赋予同样权限时,可由管理员创建用户组,将这批用户统一绑定至该用户组下,即可进行统一授权,可参考用户组管理
    • 角色管理:SQLE平台使用角色管理来实现操作权限组合,由管理员创建,可参考角色管理

    使用场景

    • 在添加项目成员、成员组之前,需要由管理员首先创建平台用户、用户组,项目管理员才可将该用户、用户组添加为项目成员、成员组
    • 为项目成员绑定数据源与角色操作权限前,需要由管理员创建相应权限的角色模板,项目管理员可为成员绑定配置的角色模板
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/user-manager/role/index.html b/docs/v2/user-manual/user-manager/role/index.html index c0450ef4..31ceb049 100644 --- a/docs/v2/user-manual/user-manager/role/index.html +++ b/docs/v2/user-manual/user-manager/role/index.html @@ -4,14 +4,14 @@ 角色管理 | SQLE 文档 - +
    版本:v2

    角色管理

    当需要为用户设置动作权限时,可使用角色管理配置动作组合。 如用户需要有创建工单、审核工单、SQL查询的动作权限,管理员可以在角色管理创建一个角色,并绑定创建工单、审核工单、SQL查询这三个动作,随后只需将此角色关联至指定成员,即可完成用户的动作权限设置。

    操作步骤

    • 点击顶部导航栏【更多】按钮,点击平台管理栏目下的【用户中心】选项,查看角色管理标签。
    • 点击列表右上角【创建角色】按钮,填写相关信息
      • 角色名
      • 角色描述
      • 选择动作权限:配置该角色所拥有的操作权限,SQLE平台支持的动作权限如下:
    权限名权限码权限说明
    查看他人工单20100当角色拥有该动作权限时,角色可以查看绑定的数据源上其他用户创建的工单
    创建/编辑工单20200当角色拥有该动作权限时,角色可以在绑定的数据源上创建工单
    工单审批20300当审核流程模版中的某个审核步骤指定为允许所有有权限的用户审批时, 拥有此权限的用户将可以审批对应工单
    审核任务查看30100拥有此权限的用户可以查看所有审核任务, 无此权限的用户只能查看自己创建审核任务
    审核任务创建30200拥有此权限的用户可以创建审核任务
    sql查询40100拥有此权限的用户可以上线工单

    执行结果

    可在角色列表查看创建的角色信息

    role

    后续步骤

    • 添加成员/成员组:项目管理员在项目中添加成员/成员组时,需要绑定成员/成员组在对应数据源上的角色权限,可参考成员/成员组管理

    更多操作

    • 编辑角色:点击角色列表的「编辑」按钮,编辑角色信息。角色名不可更改,可设置角色禁用,则对应权限不会生效。
    • 删除角色:点击角色列表的「删除」按钮,删除角色信息
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/user-manager/user-group/index.html b/docs/v2/user-manual/user-manager/user-group/index.html index 499acdb9..c20acb46 100644 --- a/docs/v2/user-manual/user-manager/user-group/index.html +++ b/docs/v2/user-manual/user-manager/user-group/index.html @@ -4,14 +4,14 @@ 用户组管理 | SQLE 文档 - +
    版本:v2

    用户组管理

    当管理员需要批量管理用户时,可以使用用户组来管理多个相同属性的用户。 比如依照「运维工程师」、「研发工程师」、「项目管理员」进行分别授权与管理。

    操作步骤

    • 点击顶部导航栏【更多】按钮,点击平台管理栏目下的【用户中心】选项,查看用户组管理标签。
    • 点击列表右上角【创建用户组】按钮,填写用户组相关信息
      • 用户组名:必填
      • 用户组描述
      • 绑定用户

    执行结果

    可在用户组列表中查看已创建的用户组列表 usergroup

    后续步骤

    • 添加项目成员组:项目管理员可进入指定项目,将创建的用户组添加为项目成员组,可参考成员/成员组管理

    更多操作

    • 编辑用户组:用户组名不可修改,其他均可修改。
      • 可设置禁用该用户组,当一个用户组被禁用,用户不会被禁用,但会失去该用户组所关联的数据源及对应角色权限。
    • 删除用户组:点击用户组列表的「删除」按钮,删除用户组信息
    - + \ No newline at end of file diff --git a/docs/v2/user-manual/user-manager/user/index.html b/docs/v2/user-manual/user-manager/user/index.html index 443636c4..f219ae68 100644 --- a/docs/v2/user-manual/user-manager/user/index.html +++ b/docs/v2/user-manual/user-manager/user/index.html @@ -4,13 +4,13 @@ 用户管理 | SQLE 文档 - +
    版本:v2

    用户管理

    当需要创建新的用户,或需要由管理员修改用户基本信息时,可以进行用户管理的相关操作。

    操作步骤

    • 点击顶部导航栏【更多】按钮,点击平台管理栏目下的【用户中心】选项,查看用户管理标签。
    • 点击列表右上角【创建用户】按钮,填写用户相关信息
      • 用户名
      • 密码
      • 确认密码
      • 邮箱:若开启邮件推送或飞书推送服务,则将会以邮件形式通知对应用户工单的流转状态
      • 微信id:若开启企业微信推送服务,则将通过企业微信通知对应用户工单的流转状态
      • 平台管理权限:当前可选项为创建项目,若选择该权限,则该用户将具有创建项目的权限
      • 所属用户组:可将用户关联至已创建的用户组中, 如当前还未创建用户组,可以在创建用户组后,通过编辑用户信息修改所属的用户组。
    • 点击提交,完成用户创建

    执行结果

    创建成功后,可在用户列表中查看已创建的用户信息

    userlist

    后续步骤

    • 创建用户组:创建用户后,可将多个用户绑定在一个用户组中,可参考用户组管理
    • 添加项目成员:项目管理员可进入指定项目,将创建的用户添加为项目成员,可参考成员/成员组管理

    更多操作

    • 编辑用户:点击用户列表的「编辑」按钮,编辑用户信息。其中,用户名不可更改,其他信息项均可更改。
    • 删除用户:点击用户列表的「删除」按钮,删除用户。
    • 修改用户密码:点击用户列表的「更多」按钮,下拉菜单中点击「更修改该用户密码」。
      提示

      管理员还可以对指定的用户进行「禁用」或者「启用」。 当用户被管理员禁用后,该用户将无法登录,也无法进行任何操作。 管理员用户永远无法禁用自己本身。

    - + \ No newline at end of file diff --git a/index.html b/index.html index 7472aac8..de273d42 100644 --- a/index.html +++ b/index.html @@ -4,13 +4,13 @@ 首页 | SQLE 文档 - +
    Docusaurus with Keytar

    一个支持多种不同类型数据库,覆盖事前控制、事后监督、标准发布场景,帮助您建立质量规范的SQL全生命周期质量管理平台。每周发版,快速迭代中。

    快速开始

    更丰富的数据源支持

    1. 支持十余种主流商业和开源数据库
    2. 持续支持新的数据源类型,以满足您不同的需求

    更全面的审核规则

    1. 拥有规则 700+,并持续增加中
    2. 源自DBA运维专家团队多年的技术积累

    更智能的 SQL 采集

    1. 提供多种智能扫描任务
    2. 满足事前和事后 SQL 持续采集需求

    更高效的审批路径

    1. 提供标准化工作流
    2. 通过消息对接,及时了解更新进度

    更便捷的数据操作

    1. 集成在线数据库客户端 CloudBeaver
    2. 通过可视化界面进行数据库管理和查询

    全生命周期SQL管控

    1. 提供 SQL 全流程的管控视角
    2. 追踪问题SQL的解决进度

    - + \ No newline at end of file diff --git a/markdown-page/index.html b/markdown-page/index.html index fa8d0fe7..141cfffb 100644 --- a/markdown-page/index.html +++ b/markdown-page/index.html @@ -4,13 +4,13 @@ Markdown page example | SQLE 文档 - + - + \ No newline at end of file diff --git a/search/index.html b/search/index.html index bb0c7a48..8c37d47e 100644 --- a/search/index.html +++ b/search/index.html @@ -4,13 +4,13 @@ 在文档中搜索 | SQLE 文档 - + - + \ No newline at end of file