安全声明(必读)
本 Skill 的数据流向完全可控,如下所示:
text
用户凭据 → [本地 Python 脚本] → 数据库服务器 → 巡检结果 → [本地 Word 报告]
- ✅ 数据库凭据:仅用于建立连接, 不会写入磁盘持久文件, 不会发送到任何第三方
- ✅ 本地文件写入:巡检结果以 Word 报告形式保存在本地
reports/目录,所有文件均在本地,不含敏感凭据- ⚠️ 限制:本 Skill 仅用于合法授权的数据库巡检,请勿用于未授权访问
能力说明📊 130+ 条增强风险规则覆盖 MySQL / PostgreSQL / Oracle / SQL Server / DM8 / TiDB / IvorySQL / GBase 8s / YashanDB / KingbaseES📈 历史趋势分析多次巡检数据聚合,生成指标趋势折线图(存储在本地 SQLite / history.json)🔒 脱敏报告导出导出 Word 时自动掩码 IP、端口、用户名、服务名,防止信息泄露
数据库驱动默认端口说明🐬 MySQLpymysql3306主从复制、binlog、查询缓存🐘 PostgreSQLpsycopg25432归档模式、缓存命中率、dead tuples🔴 Oracleoracledb / cx_Oracle1521表空间、SGA/PGA、RAC、ASM、Data Guard🟠 SQL Serverpyodbc (ODBC Driver 17/18)1433等待统计、锁与阻塞、备份检查🟡 DM8dmpython5236表空间、缓冲池、备份🐬 TiDBpymysql4000Placement Rules、TiCDC/PD 心跳🐘 IvorySQLpsycopg25432PG 兼容巡检项、复制状态🟢 GBase 8sjaydebeapi (JDBC)5258JDBC 驱动已内置( drivers/gbase/)🟣 YashanDByzplotlib / psycopg25432需要 YashanDB 客户端(见下方说明)🔵 KingbaseESpsycopg254321金仓数据库巡检
驱动说明:
- ✅ GBase 8s JDBC 驱动已内置在
drivers/gbase/目录,无需额外下载- ⚠️ Oracle / YashanDB 需要用户在机器上自行安装客户端,详见下方「驱动配置」说明
当用户请求以下任意一项时,加载本 Skill 并执行:
开始巡检前, 必须向用户收集以下信息(缺少任何一项都要询问,不要自行猜测):
参数说明默认值db_type数据库类型mysql / pg / oracle / sqlserver / dm / tidb / ivorysql / gbase / yashandb / kingbase``host数据库主机 IP 或域名需用户确认port数据库端口见上表user数据库用户名需用户确认password数据库密码需用户确认label数据库标签(用于报告命名)需用户确认,如 "生产库-MySQL"inspector巡检人员姓名需用户确认
参数说明service_name 或 sidOracle 服务名或 SID(二选一,必填)特权连接用户名输入 sys as sysdba 可建立 SYSDBA 特权连接
database 参数,连接用户即 Schemadrivers/gbase/*.jar 驱动文件,工具会自动查找部分数据库需要本地安装客户端才能正常巡检,请按以下说明配置。
✅ 驱动已内置,无需额外操作。 drivers/gbase/jdbc-3.5.1.jar 已随 skill 打包。
需要安装 Oracle Instant Client 或完整 Oracle Client。
方式一:Oracle Instant Client(推荐,体积小)
下载对应版本的 Instant Client:
解压到任意目录,如 C:\oracle\instantclient_21_12\
将目录添加到系统 PATH 环境变量:
powershell
# Windows(管理员权限运行)
[Environment]::SetEnvironmentVariable("PATH", [Environment]::GetEnvironmentVariable("PATH", "Machine") + ";C:\oracle\instantclient_21_12", "Machine")
重启终端使 PATH 生效
方式二:使用项目内置客户端
如果本机已安装 DBCheck 完整版,可直接使用 drivers/oracle_client/ 目录:
powershell
# 将 DBCheck\drivers\oracle_client 加到 PATH
[Environment]::SetEnvironmentVariable("PATH", [Environment]::GetEnvironmentVariable("PATH", "Machine") + ";D:\DBCheck\drivers\oracle_client", "Machine")
需要安装 YashanDB 客户端。
从崖山官网或管理员获取 YashanDB 客户端安装包
安装后,将客户端的 bin 目录(包含 ysql 等工具)添加到 PATH
确认 yzplotlib Python 包已安装:
bash
pip install yzplotlib
说明:YashanDB 客户端较大(约 200M),未随 skill 打包。请从 YashanDB 官方渠道获取安装包。
需要安装 ODBC Driver 17 for SQL Server 或 ODBC Driver 18 for SQL Server。
下载地址: https://learn.microsoft.com/zh-cn/sql/connect/odbc/download-odbc-driver-for-sql-server
安装后 pyodbc 可自动检测到驱动。
使用 execute_command 工具执行 Python 脚本。
先检查依赖是否完整:
bash
python -c "import pymysql, psycopg2, docxtpl, paramiko, psutil, openpyxl, docx" 2>&1
如有缺失,提示用户安装:
bash
pip install pymysql psycopg2-binary paramiko openpyxl docxtpl python-docx pandas psutil flask oracledb dmpython pyodbc flask-socketio jaydebeapi
bash
cd <skill_scripts_dir>
python run_inspection.py \
--type mysql \
--host <数据库IP> \
--port 3306 \
--user <用户名> \
--password <密码> \
--label "<数据库标签>" \
--inspector "<巡检人员姓名>"
bash
cd <skill_scripts_dir>
python run_inspection.py \
--type pg \
--host <数据库IP> \
--port 5432 \
--user <用户名> \
--password <密码> \
--database <数据库名,默认postgres> \
--label "<数据库标签>" \
--inspector "<巡检人员姓名>"
bash
cd <skill_scripts_dir>
python run_inspection.py \
--type oracle \
--host <数据库IP> \
--port 1521 \
--user <用户名> \
--password <密码> \
--service_name <服务名> \
--label "<数据库标签>" \
--inspector "<巡检人员姓名>"
bash
cd <skill_scripts_dir>
python run_inspection.py \
--type sqlserver \
--host <数据库IP> \
--port 1433 \
--user <用户名> \
--password <密码> \
--database <数据库名,默认master> \
--label "<数据库标签>" \
--inspector "<巡检人员姓名>"
bash
cd <skill_scripts_dir>
python run_inspection.py \
--type dm \
--host <数据库IP> \
--port 5236 \
--user <用户名> \
--password <密码> \
--label "<数据库标签>" \
--inspector "<巡检人员姓名>"
bash
cd <skill_scripts_dir>
python run_inspection.py \
--type tidb \
--host <数据库IP> \
--port 4000 \
--user <用户名> \
--password <密码> \
--label "<数据库标签>" \
--inspector "<巡检人员姓名>"
bash
cd <skill_scripts_dir>
python run_inspection.py \
--type ivorysql \
--host <数据库IP> \
--port 5432 \
--user <用户名> \
--password <密码> \
--database <数据库名,默认postgres> \
--label "<数据库标签>" \
--inspector "<巡检人员姓名>"
bash
cd <skill_scripts_dir>
python run_inspection.py \
--type gbase \
--host <数据库IP> \
--port 5258 \
--user <用户名> \
--password <密码> \
--database <数据库名,默认gbase01> \
--gbase-server-name <GBase 服务名,默认gbase01> \
--label "<数据库标签>" \
--inspector "<巡检人员姓名>"
GBase 8s 注意:需要
drivers/gbase/*.jar驱动文件。工具会自动查找该目录下的 jar 文件。
bash
cd <skill_scripts_dir>
python run_inspection.py \
--type yashandb \
--host <数据库IP> \
--port 5432 \
--user <用户名> \
--password <密码> \
--database <数据库名> \
--label "<数据库标签>" \
--inspector "<巡检人员姓名>"
bash
cd <skill_scripts_dir>
python run_inspection.py \
--type kingbase \
--host <数据库IP> \
--port 54321 \
--user <用户名> \
--password <密码> \
--database <数据库名,默认kingbase> \
--label "<数据库标签>" \
--inspector "<巡检人员姓名>"
text
--type 数据库类型: mysql / pg / oracle / sqlserver / dm / tidb / ivorysql / gbase / yashandb / kingbase(完整巡检必需)
--host 数据库主机 IP 或域名
--port 数据库端口(默认: MySQL 3306, TiDB 4000, PG 5432, Oracle 1521, SQL Server 1433, DM8 5236, GBase 5258, KingbaseES 54321)
--user 数据库用户名
--password 数据库密码
--service_name Oracle 服务名(Oracle 专用)
--sid Oracle SID(Oracle 专用,与 service_name 二选一)
--database 数据库名(PG/SQL Server/GBase/KingbaseES 专用,默认 postgres/master/gbase01/kingbase)
--gbase-server-name GBase 8s 服务名(GBase 专用,默认 gbase01)
--label 数据库标签,用于报告命名
--inspector 巡检人员姓名
--ssh-host SSH 主机 IP(可选,采集系统资源)
--ssh-port SSH 端口(默认 22)
--ssh-user SSH 用户名(可选)
--ssh-password SSH 密码(可选)
--ssh-key SSH 私钥文件路径(可选,与密码二选一)
<scripts_dir>/reports/ 目录下MySQL巡检报告_<标签>_<时间戳>.docxPostgreSQL巡检报告_<标签>_<时间戳>.docxOracle巡检报告_<标签>_<时间戳>.docxSQLServer_<标签>_<时间戳>.docxDM8巡检报告_<标签>_<时间戳>.docxTiDB巡检报告_<标签>_<时间戳>.docxGBase巡检报告_<标签>_<时间戳>.docxYashanDB巡检报告_<标签>_<时间戳>.docxKingbaseES巡检报告_<标签>_<时间戳>.docx巡检完成后:
open_result_view 工具打开报告文件供用户查看错误信息原因解决方案pymysql: Access denied用户名或密码错误核对数据库账户信息Can't connect to MySQL server防火墙阻止或端口不对确认端口、防火墙、安全组规则psycopg2: connection refusedPG 端口不对或未监听该地址检查 postgresql.conf 的 listen_addressesORA-01017 (Oracle)用户名/口令无效确认密码(注意大小写);如用 SYSDBA 请输入完整格式 sys as sysdba``ORA-00904 (Oracle)无效列名/标识符部分高级视图在低版本 Oracle 中不存在,标记⚠跳过不影响整体巡检dmPython returned a result with an exception set (DM8)dmPython 为惰性连接,探测失败检查端口(默认 5236)、用户名、密码、服务器访问权限Class com.gbasedbt.jdbc.Driver is not found (GBase)JDBC 驱动 jar 未找到将 GBase 8s JDBC 驱动 jar 文件放到 drivers/gbase/ 目录下SSH 采集失败SSH 认证失败或目标机器无相关命令检查用户名密码或私钥路径;确认目标机器有 top/free/df/lscpu 命令Permission denied(SSH)SSH 认证失败检查用户名密码或私钥路径
top、 free、 df、 lscpu 命令(使用 AutoAddPolicy 接受主机密钥)python-docx 和 docxtpl 库,务必确保已安装dmpython 驱动( pip install dmpython)pyodbc( pip install pyodbc)和 ODBC Driver 17 或 18(需单独安装)jaydebeapi( pip install jaydebeapi)和 GBase 8s JDBC 驱动 jar 文件reports/ 生成 Word 报告、在当前目录写入 history.json(纯数值指标)、 autoDoc.log(运行日志),均在本地机器上